Afficher des champs de textes en fonction d'un choix
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 :cry:
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.
Code:
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);
}
}
} |
Merci beaucoup !