IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[DefaultListModel] Rafraîchir une liste suivant des modifications


Sujet :

Composants Java

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut [DefaultListModel] Rafraîchir une liste suivant des modifications
    Bonjour,
    je dois gérer 2 listes, la premiere propose une de montages et la deuxieme indique les éléments du montage sélectionné.
    Bref je c comment initialiser la première, mais comment faire pour que la deuxieme soit rafraichit dès que l'utilisateur choisit un montage et affiche ses éléments ?


    Je pense que je vais devois poser un écouteur sur clikSouris addMouseListener, mais comment faire pour que cela mette a jour mon autre liste, je vais devoir la réinitialiser à chaue fois en lui passant un nouveau model ?

    Aider moi, merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Deja plutot que de mettre un mouseListener, il y a des Listener dédié au choix d'une valeur d'une JList : regarde du coté des ListSelectionListener.

    Pour ce qui est de rafraichir l'autre liste, tu n'est pas obligé de reinstancié un nouveau model, tu peux simplement mettre à jour son contenu au moment de la selection. C'est à dire qu'il effacerai tout son contenu et qu'il insererai les valeurs que tu lui enverrai au moment de la selection.

    Et je crois qu'apres avoir mis à jour ton model il faut faire un updateUi sur ta liste ou un truc du genre pour qu il mette à jour l'affichage.
    Mess with the best, die like the rest!

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    merci j'ai vu le ListSelectionListener après avoir envoyer le message sur le forum
    donc il suffit que le fasse un remove dans mon model et que j'y ajoute le contenu du nouveau.. pas bete, je v tester, aussi je vais chercher le upDate
    merci
    a tout a l'heure

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    merci ca marche super bien,
    juste une dernière petite question :
    l'évènement provoqué par le ListSelectionListener est appelé deux fois un sur l'index qui vient d'être déselctionné et l'autre sur celui qui vient d'être sélectionné,
    je sais que je peux récupéré la source mais je ne sais pas vraiment comment tester si l'évenement arrive pour la sélection ou la déselection ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    J'ai aussi un autre pb, si mes listes sont vides pas de pb lors de l'affichage, c'est à dire la taille des différents JScrollPane qui contiennent les JList sont comme je le désire.
    Par contre dès que qq chose est présent dans la liste l'IHM est "déformée", la largeur du JScrollPane qui contient la liste des montages diminue, et l'autre la liste des élément augmente.
    J'ai dèjà eu ce pb sur une autre IHM qui utilisait des JList. mais j'ai laissé car je ne comprenais pas.

    j'ai utilisé le UpdateUI sur ma liste d'éléments.
    pour la liste de montage je l'ai utiliser après l'initialisation (apres setModer, Setrenderer...).

    Voyez vous de quoi cela provenir ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Si la taille des composants change ca peut provenir de ton Layout.
    Pourrais tu nous donner la disposition de tes composant ainsi que le Layout que tu utilises.
    Mess with the best, die like the rest!

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    j'utilise le gridBagLayout...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
      private javax.swing.JPanel getRootContentPane() {
        if (rootContentPane == null) {
          GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
          GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
          GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
          GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
          rootContentPane = new javax.swing.JPanel();
          rootContentPane.setLayout(new GridBagLayout());
          rootContentPane.setFont(ParameterUI.PAC7000_FONT);
          gridBagConstraints1.weightx = 5.0D;
          gridBagConstraints1.weighty = 1.0;
          gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;
          gridBagConstraints1.gridx = 0;
          gridBagConstraints1.gridy = 0;
          gridBagConstraints1.insets = new java.awt.Insets(5, 5, 5, 5);
          gridBagConstraints2.weightx = 5.0D;
          gridBagConstraints2.weighty = 1.0;
          gridBagConstraints2.fill = java.awt.GridBagConstraints.BOTH;
          gridBagConstraints2.gridx = 1;
          gridBagConstraints2.gridy = 0;
          gridBagConstraints2.insets = new java.awt.Insets(5, 0, 5, 5);
          gridBagConstraints3.gridx = 2;
          gridBagConstraints3.gridy = 0;
          gridBagConstraints3.fill = java.awt.GridBagConstraints.BOTH;
          gridBagConstraints3.insets = new java.awt.Insets(5, 0, 5, 5);
          gridBagConstraints3.weightx = 1.0D;
          gridBagConstraints3.weighty = 1.0D;
          gridBagConstraints4.gridwidth = 3;
          gridBagConstraints4.gridx = 0;
          gridBagConstraints4.gridy = 1;
          gridBagConstraints4.fill = java.awt.GridBagConstraints.HORIZONTAL;
          gridBagConstraints4.insets = new java.awt.Insets(0, 5, 0, 5);
          rootContentPane.add(getActionPanel(), gridBagConstraints3);
          rootContentPane.add(getMONTAGEScrollPane(), gridBagConstraints1);
          rootContentPane.add(getELEMENTScrollPane(), gridBagConstraints2);
          rootContentPane.add(getConfirmPanel(), gridBagConstraints4);
        }
        return rootContentPane;
      }
    cela donne :
    ____________ _____________ ______
    |....................| |....................| |.........|
    |....................| |....................| |.........|
    |.........1.........| |.........2..........| |...3....|
    |....................| |....................| |.........|
    ____________ ____________ ________

    le 3 et 4 contiennent juste des boutons et eux ne bouge pas c vraiment 1 et 2.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 28
    Points : 28
    Points
    28
    Par défaut
    Personnelement je pense qu'il ne faut pas utiliser les GridBagLayout. Tu peux faire tout ce que peux faire ce layout en te prenant moins la tête en utilisant uniquement des BorderLayout, GridLayout et BoxLayout.

    Par contre j'ai pas trop compris ton dessin donc je ne peux pas te donner un exemple pour t'aider Tu peux réexpliquer ce que tu veux faire?

    Le Pro_Fete.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Oui dans ton cas le GridBagLayout n'est peut etre pas la meilleure solution, bien qu il semble bien construit.
    Tu pourrais mettre 1 et 2 dans un gridLayout dans un panel.
    Ensuite tu met ce panel au centre d'un panel avec un BorderLayout, le 3 à l'EST et le 4 au SUD.
    Si tu veux garder ton GridBagLaout, tu peux essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    c1.weightx = 1;
    c1.weighty=1;
    c2.weightx = 1;
    c2.weighty=1;
    c3.weightx = 0;
    c3.weighty=1;
    c4.weightx = 0;
    c4.weighty=0;
    Et tu n'espas obligé de déclarer 4 contraintes. Tu peux garder la même en la redefinissant apres chaque insertion dans le panel.
    Mess with the best, die like the rest!

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    désolé, mais je ne compte pas changer de layout... on a décider de choisir celui-ci pour toute les IHM, c'est une regle...
    tanpis, mais merci comme meme.

    Je pensais que mon pb pouvais venir de l'utilisation de la JList, car c seulement lors du changement de son model que l'affichage est modifié...
    je ve dire la taille des différent panel...
    voilà, cela rappel un défaut a qq'1... et si la personne a trouvé une solution... n'hésiter pas.

    merci encore

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Est ce que tu as essayé avec les contraintes de poids que je t donné ?
    Mess with the best, die like the rest!

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    je vien d'essayer mais ca ne change pas.
    mais j'ai du nouveau... lol
    après l'initialiastion de toute l'IHM, j'ai forcer la selection dans ma première list (1) setSelectedIndex.
    [ je rappel que je faisait déjà au niveau de l'intialisation de cette liste et après l'init de la liste 2. (le dernier upDate etait sur la liste 2)
    et avant c'etait la liste 2 qui est d'une plus grande largeur que la 1
    <---------------><-------------------------><-------->
    ........1............ |..............2...................|....3.......|
    <---------------><-------------------------><-------->

    maintenant en rajoutant ce setSelectedIndexsur la liste 1, voila le resultat :
    <------------------------><-------------------------><-------->
    ...............1................ |..............2...................|....3.......|
    <------------------------><-------------------------><-------->
    Elle s'est agrandi mais ne fais pas encore la meme taille... mais presque mais cela n'est pas encore très beau.

    c bizarre non ?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Je viens de faire un test et affectivement l affichage est buggué avec le GridBagLayout mais en mattant un autre Layout le probleme est résolu.
    Je te met mon test si tu veux voir (Je met le GridBagLayout en commentaire).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    import javax.swing.*;
    import java.util.*;
    import java.awt.*;
    import java.awt.event.*;
     
    public class Test2 extends JFrame {
     
    	JList list1;
    	JList list2;
    	JScrollPane scrollList1;
    	JScrollPane scrollList2;
    	JButton add;
    	JButton remove1;
    	JButton remove2;
    	JTextField field;
     
    	public Test2 () {
    		super("Test");
     
    		Vector data1 = new Vector();
    		data1.add("toto");
    		data1.add("titi");
    		data1.add("tata");
    		data1.add("tutu");
     
    		list1 = new JList(data1);
    		list2 = new JList();
    		scrollList1 = new JScrollPane(list1);
    		scrollList2 = new JScrollPane(list2);
    		add = new JButton("Add");
    		remove1 = new JButton("Remove From 1");
    		remove2 = new JButton("Remove From 2");
    		field = new JTextField(10);
     
    		JPanel rightPane = new JPanel();
    		rightPane.setLayout(new GridLayout(2,1));
    		rightPane.add(remove1);
    		rightPane.add(remove2);
     
    		JPanel bottomPane = new JPanel();
    		bottomPane.setLayout(new FlowLayout());
    		bottomPane.add(add);
    		bottomPane.add(field);
     
    		JPanel centerPane = new JPanel();
    		centerPane.setLayout(new GridLayout(1,2));
    		centerPane.add(scrollList1);
    		centerPane.add(scrollList2);
     
    		Container pane = this.getContentPane();
    		pane.setLayout(new BorderLayout());
    		pane.add(centerPane,BorderLayout.CENTER);
    		pane.add(bottomPane,BorderLayout.SOUTH);
    		pane.add(rightPane,BorderLayout.EAST);
     
    		/*pane.setLayout(new GridBagLayout());
    		GridBagConstraints c = new GridBagConstraints();
    		c.gridx = 0;
    		c.gridy = 0;
    		c.gridwidth = 1;
    		c.gridheight = 1;
    		c.weightx = 1;
    		c.weighty = 1;
    		c.fill = GridBagConstraints.BOTH;
    		c.anchor = GridBagConstraints.CENTER;
    		pane.add(scrollList1,c);
     
    		c.gridx = GridBagConstraints.RELATIVE;
    		pane.add(scrollList2,c);
     
    		c.gridwidth = GridBagConstraints.REMAINDER;
    		c.weightx = 0;
    		pane.add(rightPane,c);
     
    		c.gridx = 0;
    		c.gridy = 1;
    		c.weighty = 0;
    		pane.add(bottomPane,c);*/
     
    		this.setSize(800,200);
    		this.setLocation(500,500);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setVisible(true);
    	}
     
    	public static void main(String arg[]) {
    		Test2 t = new Test2();
    	}
    }
    Mess with the best, die like the rest!

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    ok merci je crois q je v faire eception a la regle et tester avec BorderLayout...
    je test............

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    désolé, mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      private javax.swing.JPanel getRootContentPane() {
        if (rootContentPane == null) {
          rootContentPane = new javax.swing.JPanel();
          rootContentPane.setFont(ParameterUI.PAC7000_FONT);
          rootContentPane.setLayout(new BorderLayout()); 
          rootContentPane.add(getConfirmPanel(),BorderLayout.SOUTH); 
          rootContentPane.add(getActionPanel(),BorderLayout.EAST); 
          rootContentPane.add(getAssemblyScrollPane(),BorderLayout.WEST); 
          rootContentPane.add(getGageScrollPane(),BorderLayout.CENTER); 
        }
        return rootContentPane;
      }
    ya toujours un changement si mon panel assembly (WEST) est vide ou non !!
    je n'ai pas changer les types de layout dans mes panels getConfirmPanel, getActionPanel, getAssemblyScrollPane, getGageScrollPane à l'intérieur j'utilise toujours le GridBagLayout... cale peut venir de la?
    car en meme temps mais ScrollPane ya pas de layout de défini.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Il faut que tu mette les deux partis devant avoir la même taille dans un GridLayout avant. Comme ca ca devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    private javax.swing.JPanel getRootContentPane() {
        if (rootContentPane == null) {
          rootContentPane = new javax.swing.JPanel();
          rootContentPane.setFont(ParameterUI.PAC7000_FONT);
          rootContentPane.setLayout(new BorderLayout());
          rootContentPane.add(getConfirmPanel(),BorderLayout.SOUTH);
          rootContentPane.add(getActionPanel(),BorderLayout.EAST);
     
          JPanel centerPanel = new JPanel(new GridLayout(1,2));
          centerPanel.add(getAssemblyScrollPane());
          centerPanel.add(getGageScrollPane());
     
          rootContentPane.add(centerPanel,BorderLayout.CENTER);
        }
        return rootContentPane;
      }
    Mess with the best, die like the rest!

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    Merci cela à marcher...
    c super.
    donc le pb venait bien du GridBagLayout?

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 390
    Points : 432
    Points
    432
    Par défaut
    Je pense oui.
    Le GridBagLayout n'a pas toujours le comportement que l'on voudrait.
    Mess with the best, die like the rest!

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    ok merci
    juste une petite question j'ai le meme genre d'IHM mais cette fois ci entre les 2panels contenant les JList g un panel avec des boutons ([>], [>>]...).
    dans ce cas je ne peux mais mettre mes duex listPanel dans un meme borderLayout Center ?
    que dois je faire....

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 504
    Points : 288
    Points
    288
    Par défaut
    une derniere question avec le GridBagLayout il y a la propriété inset, mais dans le BorderLayout comment fait-on pour le paramétrer?

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/09/2010, 14h14
  2. Retourner une liste privée des multiples d'un nombre
    Par Premium dans le forum Langage
    Réponses: 2
    Dernier message: 08/10/2006, 22h50
  3. Créer une liste avec des noms de fichiers
    Par Jeffboj dans le forum Access
    Réponses: 5
    Dernier message: 12/05/2006, 05h48
  4. [Librairie] Mettre en page une liste avec des puces
    Par karibouxe dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 27/03/2006, 17h53
  5. [MFC] creer une liste avec des check????
    Par ginounet dans le forum MFC
    Réponses: 4
    Dernier message: 16/06/2004, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo