Bonjour,
J'ai un problème avec un JComboBox.
Enfin plus précisément avec une classe qui hérite un JComboBox.
J'ai fait ce petit exemple source pour essayer de condenser mon problème.
En fait au départ, la taille (getSize) du modèle du JComboBox vaut une certaine valeur.
Si j'augmente cette taille et que j'essaye de faire apparaitre le PopMenu, il est vide.
Si je rediminue cette taille, mon PopMenu apparait normalement...
Là, franchement, je bloque...
Merci,
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
90
91
92
93
94
95
96
97
98
99
100
101
102 import java.awt.Container; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import java.util.Vector; import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; /** * Classe Exemple */ public class Exemple extends JFrame implements ActionListener { private MonCombo monCombo; private JButton boutonAjouter = new JButton("Ajouter"); private JButton boutonSoustraire = new JButton("Supprimer"); /** * Classe MonCombo */ private class MonCombo extends JComboBox { private MonModele modele=new MonModele(); /** * Classe MonModele */ private class MonModele extends DefaultComboBoxModel { private Vector tableauxInterne = new Vector(); public MonModele() { Random rnd = new Random(); tableauxInterne.addElement(new Integer(rnd.nextInt(10))); tableauxInterne.addElement(new Integer(rnd.nextInt(10))); } public Object getElementAt(int index) { return tableauxInterne.elementAt(index); } public int getSize() { return tableauxInterne.size(); } } private MonCombo() { super(); setModel(modele); if (getItemCount() > 0) { setSelectedIndex(0); } } } private Exemple() { super("Exemple"); monCombo = new MonCombo(); boutonAjouter.addActionListener(this); boutonSoustraire.addActionListener(this); Container conteneur = getContentPane(); conteneur.setLayout(new GridBagLayout()); GridBagConstraints contrainte = new GridBagConstraints(); contrainte.weightx = 1; contrainte.fill = GridBagConstraints.HORIZONTAL; conteneur.add(monCombo, contrainte); contrainte.gridy = 1; conteneur.add(boutonAjouter, contrainte); contrainte.gridy = 2; conteneur.add(boutonSoustraire, contrainte); pack(); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { int index = monCombo.getSelectedIndex(); if (e.getSource() == boutonSoustraire) { Random rnd = new Random(); int pos=rnd.nextInt(monCombo.modele.tableauxInterne.size()); monCombo.modele.tableauxInterne.removeElementAt(pos); } else { if (e.getSource() == boutonAjouter) { Random rnd = new Random(); monCombo.modele.tableauxInterne.addElement(new Integer(rnd.nextInt(10))); } } } public static void main(String args[]) { new Exemple(); } }
Cordialement,
Partager