Bonjour,
J'ai actuellement une fenêtre qui comporte plusieurs radio boutons, boutons et autres joyeuseries swing. Parmi tout ça se trouve un bouton qui ouvre une nouvelle fenêtre (un JDialog) comportant des listes déroulantes (autant de boîtes que de lignes sélectionnées sur la fenêtre principale).
Après avoir choisi toutes les valeurs souhaitées dans les listes déroulantes, je voudrais pouvoir valider par un bouton "customisé" qui comporterait un message du style "valider les choix". Seulement voila, ma JDialog est le container d'un panneau qui contient lui-même un autre panneau, et ce afin de pouvoir gérer les différents Layout que je souhaite utiliser.
J'ai créé ce bouton mais je n'arrive pas à valider les choix en fermant par clic sur ce bouton "valider les choix".
Voici mon code actuel :
Fenêtre principale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class JAlgorithmFrame extends JFrame implements ActionListener{ JButton aDistortedButton; public void actionPerformed(ActionEvent arg0) { if(arg0.getSource().equals(aDistortedButton)){ JDistortedPanel aDistortedDialog = new JDistortedPanel(this,unCalculateur.aCaptorList); JDialog aDialog = new JDialog(); aDialog.setContentPane(new JScrollPane(aDistortedDialog)); aDialog.setModal(true); aDialog.pack(); aDialog.setVisible(true); } } }
Objet JDistortedPanel :
Méthode utilisée dans le constructeur du JDistortedPanel :
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 public JDistortedPanel(JFrame frame, CaptorList aCaptorList) { super(new BorderLayout()); this.frame = frame; setSize(new Dimension(400,400)); this.setPreferredSize(new Dimension(400,400)); //Crée les composants de la fenêtre JPanel frequentPanel = createDistortedDialogBox(aCaptorList); label = new JLabel("Choisissez les valeurs", JLabel.CENTER); Border padding = BorderFactory.createEmptyBorder(20,20,5,20); frequentPanel.setBorder(padding); add(frequentPanel, BorderLayout.CENTER); add(label, BorderLayout.SOUTH); label.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); }
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 private JPanel createDistortedDialogBox(final CaptorList aCaptorList) { JLabel explanation = new JLabel("Explications",JLabel.CENTER); JLabel label = new JLabel(simpleDialogDesc + ":"); JPanel pane = new JPanel(); final int numButtons = aCaptorList.size(); final double[] distortValues = new double[numButtons]; //Valeurs possibles pour la liste déroulante //Double[] data = {0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9}; anOKButton = null; JDistortedLayoutPanel aDistortedLayoutPanel = new JDistortedLayoutPanel(numButtons,aCaptorList); // Ajout du bouton de validation anOKButton = new JButton("Valider les choix"); anOKButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for (int i = 0; i < numButtons; i++) { Captor aCaptor = aCaptorList.get(i); aCaptor.setDistort(distortValues[i]); //setVisible(false); } return; } }); pane.setLayout(new BoxLayout(pane,BoxLayout.Y_AXIS)); pane.add(explanation); pane.add(label); pane.add(aDistortedLayoutPanel); pane.add(anOKButton); return pane; }
Et enfin le panneau créé dans la méthode précédente :
Voila, si quelqu'un peut m'apporter une quelconque aide, je suis preneur. J'ai cherché des solutions sur le forum mais soit je ne sais pas chercher, soit ça ne correspondait pas à ma situation.
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 public JDistortedLayoutPanel(int numCaptors, CaptorList captorList) { this.setPreferredSize(new Dimension(400,400)); this.setLayout(new SpringLayout()); //Valeurs possibles Double[] data = {0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9}; JComboBox[] comboBoxes = new JComboBox[numCaptors]; JLabel[] aLabelArray = new JLabel[numCaptors]; JLabel aLabelString = new JLabel(); for (int i = 0; i < numCaptors; i++) { aLabelString = new JLabel(captorList.get(i).getACaptorName(),JLabel.TRAILING); aLabelArray[i] = aLabelString; this.add(aLabelArray[i]); //Ajout des listes déroulantes comboBoxes[i] = new JComboBox(data); this.add(comboBoxes[i]); } SpringUtilities.makeCompactGrid(this, numCaptors, 2, //rows, cols 5, 5, //initialX, initialY 20, 5);//xPad, yPad }
Merci :-)
Partager