Bonjour,
J'essai de créer une classe ADList dérivée de la classe JList. La classe ADList contient un argument de type ArrayList<AnnotatedDialog>. Chaque AnnotatedDialog possède un nom de fichier (en String) et le but de l'ADList est de donner la liste des noms de fichiers des AnnotatedDialog figurant dans l'ArrayList.
J'ai créé la classe ADList qui semble fonctionner. Malheureusement, la liste ne s'actualise pas automatiquement. Si j'ajoute un élément dans l'ArrayList, il faut que je click sur mon ADList dans l'interface graphique pour que l'actualisation soit effectuée.
Voici le code de la classe ADList :
Lorsque je modifie l'ArrayList en utilisant la méthode setAD la mise à jour est bien faite mais rien ne semble indiquer au composant graphique de s'acuatliser. Comment puis-je faire cela ? Je me suis trompé quelque part ?
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 ... imports ... public class ADList extends JList{ private ArrayList<AnnotatedDialog> ad; public ADList(ArrayList<AnnotatedDialog> ad_arg){ ad = ad_arg; setModel(new ADListModel()); this.setCellRenderer(new ADListCellRenderer()); } /* Methode utilisee pour mettre a jour la liste */ public void setADL(ArrayList<AnnotatedDialog> ad_arg){ ad = ad_arg; } public ArrayList<AnnotatedDialog> getAD(){ return ad; } public class ADListModel extends AbstractListModel { public int getSize(){ return ad.size(); } public Object getElementAt(int index){ return ad.get(index).getFileName(); } } private class ADListCellRenderer extends DefaultListCellRenderer{ public Component getListCellRendererComponent(JList list, Object value, int index, boolean iss, boolean chf){ super.getListCellRendererComponent(list, value, index, iss, chf); return this; } } }
------------
EDIT : J'ai oublié de préciser comment j'affiche l'ADList. Je met l'ADList dans un JPanel puis je met le JPanel dans un JScrollPane puis je met le JScrollPane dans un autre JPanel :
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 JPanel jp_adl = new JPanel(new GridLayout()); jp_adl.add(monADList); JScrollPane jsp_adl = new JScrollPane(); jsp_adl = new JScrollPane(jp_adl); JPanel jp_frame = new JPanel(new GridBagLayout); jp_frame.add(jsp_adl, getConstraints(0, 4, 5, 1, 1.0, 0.48 , GridBagConstraints.WEST, GridBagConstraints.BOTH); ... public GridBagConstraints getConstraints(int x, int y, int width, int height, double wX, double wY, int anchor, int fill){ GridBagConstraints c = new GridBagConstraints(); c.gridx = x; c.gridy = y; c.gridwidth = width; c.gridheight = height; c.weightx = wX; c.weighty = wY; c.anchor = anchor; c.fill = fill; return c; }
Partager