Hello :-)
Ca fait deux mois que je galère sur la question que je vais vous poser. J'ai eu beau éplucher toutes les docs et forums, rien à faire : le concept m'échape.
Je dispose d'une interface graphique qui notamment utilise un JSplitPane dans lequel on trouve deux JScrollPane, qui eux- même contiennent respectivement une JList et un JTextArea. Tout le monde suit ?
Ce qui s'affiche dans la JList provient d'une fonction externe à mon interface graphique. Cette fonction met à jour le tableau d'occurrences à afficher (à savoir via Main.ext.liste()). Si le tableau ne contient aucune occurrence, message d'erreur. Si le tableau contient au moins une occurrence, alors on affiche l'ensemble des occurrences. La JList doit être rafraîchie à chaque changement de Main.ext.liste().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 +-------------------+-------------------+ | JSplitPane | | +----------------+ +----------------+ | | | JScrollPane1 | | JScrollPane2 | | | | +------------+ | | +------------+ | | | | | JList | | | | JTextArea | | | | | +------------+ | | +------------+ | | | +----------------+ +----------------+ | +-------------------+-------------------+
Note : les items de la liste doivent correspondre à du texte compréhensible (actuellement, je me récupère une adresse bizarre).
Ensuite, une fois la liste créée, on doit pouvoir cliquer sur un seul item, ce qui provoque l'affichage dans le JTextArea du contenu d'une autre colonne du tableau accédé via Main.ext.liste() pour l'indice i. Pour l'exemple, à tout mot listé correspond une définition donnée. Si on change d'item, le contenu du JTextArea change.
Le principe est simple. La pratique est plus compliquée (je pense en partie dû à la complexité d'un JList).
Pour cela, je déclare dans mon IHM (le code complet de mon IHM fait plusieurs pages, d'où les points de suspension ici et là dans le code) :
Vous l'aurez remarqué, mon code n'est pas complet (je sèche sur certaines parties). Le problème est que je ne sais plus si mon code affichant la liste est suffisant, où je dois poser mes écouteurs d'événements, etc.
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 public class Window extends JFrame implements ActionListener, ChangeListener { ... static DefaultListModel listModel; static JList listeMots; static int nb_items; JTextArea definition; ... public Window() throws Exception { ... nb_items = 0; listModel = new DefaultListModel(); listeMots = new JList( listModel); listeMots.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_SELECTION); listeMots.setEnabled( false); listeMots.setVisible( true); ... definition = new JTextArea( 10, 40); definition.setVisible( true); definition.setEnabled( false); ... } ... public static void refreshList( int nb_occurrence) throws Exception { if (nb_occurrence == 0) { Dialogues.dialogNoMsg(); // Message d'erreur } else { ListSelectionModel lsm = listeMots.getSelectionModel(); lsm.addListSelectionListener( new ListSelectionListener() { public void valueChanged( ListSelectionEvent e) { try { ListSelectionModel lsm = (ListSelectionModel) e.getSource(); } catch (Exception e1) { System.err.println( "Erreur : " + e1); } } }); nb_items = nb_occurrence; if (listeMots.getModel().getSize() !=0) { // Retirer tous les éléments de la liste s'il y en avait //listModel.removeAllElements(); listeMots.removeAll(); } else { // Tant qu'il existe des occurrences non affichées, // créer les items correspondants //for (int i=0; i<Main.ext.liste().length; i++) { // listModel.addElement( Main.ext.liste()); //} for( int i=0; i<nb_items; i++) { listModel.addElement( Main.ext.liste()); } Object[] values = listeMots.getSelectedValues(); } } listeMots.addListSelectionListener( this); } ... public void valueChanged( ListSelectionEvent e) { try { ListSelectionModel lsm = (ListSelectionModel) e.getSource(); Object[] itemSelection = listeMots.getSelectedValues(); } catch (Exception e1) { System.err.println( "Erreur : " + e1); } } }
Bref, je patauge. :-(
Est-ce qu'un spécialiste de la JList pourrait m'aider s'il vous plaît ?
Merci d'avance.
Partager