Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > fr.comp.lang.java > #1633

Re: JPanel scrollable ou pas?

From Yliur <yliur@free.fr>
Newsgroups fr.comp.lang.java
Subject Re: JPanel scrollable ou pas?
Date 2018-01-01 20:46 +0100
Organization Groupes francophones par TrigoFACILE
Message-ID <20180101204600.302d0e07@free.fr> (permalink)
References <5a4653ed$0$31622$426a74cc@news.free.fr> <nnd$12a75e81$6e30983e@e499cf161367f830> <5a47d1b1$0$3692$426a74cc@news.free.fr> <20171230203159.03c32a8e@free.fr> <5a4921e7$0$3302$426a74cc@news.free.fr>

Show all headers | View raw


Le 31 Dec 2017 17:44:07 GMT
bloiiing <bloiiing.invalid@yahoo.com> a écrit :

> Yliur wrote:
> 
> 
> >  
> >>>> Je suis en train d'essayer de mettre une JScrollPane sur un
> >>>> JPanel et je n'y arrive pas. Est-ce que je suis obligé dans ce
> >>>> cas d'implémenter l'interface Scrollable sur une classe de type
> >>>> JPanel? Ou bien est-ce que je peux le faire sans ça?  
> >>
> >> Je vais peut-être choisir une autre option que des JPanel si je
> >> n'ai pas la réponse à cette question...  
> >
> > La javadoc de JScrollPane explique le concept et comment les
> > éléments s'imbriquent.
> >
> > De mémoire, tu place ton JScrollPane quelque part (dans un
> > composant) puis tu positionnes un composant à l'intérieur, ce qui
> > permettra de faire défiler la vue sur ce composant. Et ça se fait
> > avec JScrollPane.setViewportView (composant)
> > je pense (le panneau défilant JScrollPane se trouvant intégré dans
> > un composant parent comme tu le fait pour un autre panneau ou
> > composant). 
> 
> En fait, c'est ce que j'ai fait avec des JTextPane et ça marche très
> bien car ils implémentent l'interface Scrollable. Le JPanel, lui, ne
> l'implémente pas. J'avais déjà essayé ce que tu dis plus haut et ça ne
> marche pas. La question c'était de savoir si il fallait implémenter
> cette interface pour que ça marche? Et si oui, comment?

J'ai un exemple chez moi qui marche, et je confirme que ça fonctionne
comme ça (pas d'interface à implémenter) :

panneauDefilant = new JScrollPane (listeAAfficher) ;

(puis placer ce panneau défilant dans autre chose)

A priori les ascenseurs devraient apparaître quand le contenu est plus
grand que la vue.

Si ça ne fonctionne pas, il faut que tu montres ton code et que tu
précises ton problème : est-ce que rien ne s'affiche, il n'y a pas les
ascenseurs, ... ?

De mémoire, un problème existe quand le composant que tu places dans la
vue défilante se cale sur l'espace qui lui est donné : au lieu de prendre
toute la place qu'il veut et que la vue défile, il s'arrange pour ne
jamais dépasser de la vue afficher et donc les ascenseurs n'apparaissent
pas.

Est-ce que tu peux essayer l'exemple ci-dessus et montrer le code
correspondant, puis indiquer ce que tu obtiens comme résultat ?


> >> Merci quand-même.
> >> 
> >> Au passage, est-ce que quelqu'un sait comment faire monter ou
> >> descendre des éléments d'une JList. À la souris ou en clicquant sur
> >> un bouton up/down? Si j'arrive à faire ça, je n'aurais plus besoin
> >> de mon JPanel. Par contre j'ai trouvé beaucoup d'exemples de
> >> d'implémentations de JList, mais aucune ne fait ça...  
> >
> > Si tu veux pouvoir permuter des événements : je ne pense pas que ce
> > comportement soit prédéfini, mais tu peux sans doute l'écrire en
> > interceptant les événements clavier/souris sur la liste et en
> > modifiant le modèle de la liste (là où tu stockes les éléments
> > affichés). 
>
> J'ai une question à ce sujet. J'ai une ArrayList que je peux
> transformer en DefaultListModel. Mais quand l'utilisateur fait des
> modifications dans le DefaultListModel par l'intermédiare de la
> JList, comment est-ce que je peux répercuter ces modifications sur
> mon ArrayList de départ. Car c'est elle que je vais sauvegarder.
> Est-ce que je suis obligé de recopier tous les éléments du
> DefaultListModel dans une nouvelle ArrayList? Ou existe-t-il une
> méthode plus simple, moins lourde?

ListModel accepte des écouteurs de type ListDataListener : tu peux
regarder dans la doc pour voir si les événements indiqués correspondent
à ce que tu veux capturer. Un essai sera peut-être nécessaire aussi.

Si tu obtiens des infos assez précises, tu pourras reporter les
modifications sur ta liste derrière.

Une autre question à traiter : est-ce que tu veux que les modifications
soient reportées en direct ou seulement lors d'une étape de validation
des données ?

Une autre option est d'écrire toi-même la classe implémentant ListModel
(l'intro de la javadoc de JList explique ce qui est important pour ça).
Avec cette solution tu devrais pouvoir obtenir des informations assez
fines sur les modifications effectuées et les reporter à l'identique sur
ta liste derrière. Voire utiliser ta liste derrière comme modèle pour la
liste graphique, en reportant toutes les opérations de lecture et
d'écriture dessus directement. Attention dans ce cas au fait que tu ne
veux pas obligatoirement les reporter directement et à réfléchir dans le
cas où cette liste de données derrière est utilisée ailleurs par le
programme.


> > Si tu veux juste un ascenseur autour de ta liste, la solution avec
> > JScrollPane est la voie à suivre à mon avis.  
> 
> Non. En fait, je veux pouvoir intervertir les éléments. Les faire
> monter ou descendre. Et que ce soit synchro avec la List de départ
> qui est une ArrayList et que je sauvegarderai.

Je vois que JList contient des méthodes comme setDragAnebled,
setDropMode, ... : sans doute à creuser pour déplacer des éléments en
les faisant glisser.

Back to fr.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

JPanel scrollable ou pas? bloiiing <bloiiing.invalid@yahoo.com> - 2017-12-29 14:40 +0000
  Re: JPanel scrollable ou pas? Yvon Nedonchelle <nedonchelle.yvon@orange.fr> - 2017-12-30 18:29 +0100
    Re: JPanel scrollable ou pas? bloiiing <bloiiing.invalid@yahoo.com> - 2017-12-30 17:49 +0000
      Re: JPanel scrollable ou pas? Yliur <yliur@free.fr> - 2017-12-30 20:31 +0100
        Re: JPanel scrollable ou pas? bloiiing <bloiiing.invalid@yahoo.com> - 2017-12-31 17:44 +0000
          Re: JPanel scrollable ou pas? Yliur <yliur@free.fr> - 2018-01-01 20:46 +0100
            Re: JPanel scrollable ou pas? bloiiing <bloiiing.invalid@yahoo.com> - 2018-01-04 01:33 +0000
              Re: JPanel scrollable ou pas? Yliur <yliur@free.fr> - 2018-01-08 00:26 +0100

csiph-web