Bonjour tout le monde,
Dans le cadre de mon TM, Travail de Maturité, je bosse actuellement sur un projet en Java, sur les générateurs de nombres aléatoires.
J'ai appris récemment le Java (donc encore très débutant), et je construit un GUI assez simple.
J'aimerais ceci : L'utilisateur a d'abord un choix à faire à l'aide du RadioButton. J'aimerais que certains champs de textes (deuxième choix) apparaissent ou pas en fonction du premier choix...
Ex. : imaginez que vous sélectionnez un monde de paiement par chèque --> alors les champs de texte destinés au mode "carte bancaire" se masquent ou ne sont plus accessible... Vous comprenez ?
Avec mes connaissances, j'ai pensé faire une classe interne qui "écoute" le choix du RadioButton, puis va faire (en fonction de ce choix) un "monChampAMasquer.setVisible(false)"... Mais ça ne fonctionne pas
Après renseignement, j'ai lu que la classe interne peut accéder au variable/objet déclarés "private" de la classe externe...
Voilà, j'espère que vous comprendrez et que vous pourrez m'aiguiller.
Le problème se situe à la dernière ligne.
Merci beaucoup !
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JButton; import javax.swing.JRadioButton; public class Fenetre extends JFrame implements ActionListener { // JPannels : private JPanel container = new JPanel(); private JPanel ChoicePanel = new JPanel(); private JPanel ResultsPanel = new JPanel(); // RadioButton pour le choix de la méthode private JRadioButton choice1 = new JRadioButton("Carrés médians"); private JRadioButton choice2 = new JRadioButton("Fibonacci"); private JRadioButton choice3 = new JRadioButton("GCL"); private JRadioButton choice4 = new JRadioButton("LFSR"); // ButtonGroup private ButtonGroup bg1 = new ButtonGroup(); // Button normal private JButton test = new JButton("Test"); // Compteur private int compteur = 0; // Texte private JLabel label = new JLabel("0"); public Fenetre() { this.setTitle("Générateur de nombres pseudo aléatoires"); this.setSize(900, 600); this.setLocationRelativeTo(null); this.setResizable(false); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ContentPane : container container.setBackground(Color.ORANGE); container.setLayout(null); this.setContentPane(container); // JPanel des choix de l'utilisateur (méthode) ChoicePanel.setBackground(Color.blue); ChoicePanel.setLayout(new GridLayout(4, 1)); ChoicePanel.setSize(new Dimension(150, 250)); ChoicePanel.setLocation(0, 0); container.add(ChoicePanel); // choice1.addActionListener(new StateListener()); choice2.addActionListener(new StateListener()); choice3.addActionListener(new StateListener()); choice4.addActionListener(new StateListener()); // choice1.setMnemonic(1); choice2.setMnemonic(2); choice3.setMnemonic(3); choice4.setMnemonic(4); // ChoicePanel.add(choice1); ChoicePanel.add(choice2); ChoicePanel.add(choice3); ChoicePanel.add(choice4); // bg1.add(choice1); bg1.add(choice2); bg1.add(choice3); bg1.add(choice4); // JPannel des résultats ResultsPanel.setBackground(Color.red); ResultsPanel.setSize(new Dimension(150, 250)); ResultsPanel.setLocation(400, 0); ResultsPanel.add(label); container.add(ResultsPanel); // Button "test" test.addActionListener(this); test.setSize(new Dimension(150, 250)); test.setLocation(200, 0); container.add(test); } public void actionPerformed(ActionEvent arg0) { // Lorsque nous cliquons sur notre bouton, on met à jour le JLabel // this.compteur++; if (bg1.getSelection().getMnemonic() == 1) { label.setText("1"); } if (bg1.getSelection().getMnemonic() == 2) { label.setText("2"); } if (bg1.getSelection().getMnemonic() == 3) { label.setText("3"); } if (bg1.getSelection().getMnemonic() == 4) { label.setText("4"); } if (bg1.getSelection().getMnemonic() == 1) { test.setVisible(false); } // label.setText("Vous avez choisi " + bg1.getSelection()); } } class StateListener implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("source : " + ((JRadioButton) e.getSource()).getText() + " - état : " + ((JRadioButton) e.getSource()).isSelected()); } } class ChoiceListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (((JRadioButton) e.getSource()).isSelected() == true) { MonChampAMasquer.setVisible(false); } } }
Partager