Je voudrais définir l'option modifiable d'une zone de texte en fonction de la sélection d'un bouton radio? Comment coder l'auditeur d'action sur le bouton radio?
C'est la solution que j'utiliserais dans ce cas.
//The text field
JTextField textField = new JTextField();
//The buttons
JRadioButton rdbtnAllowEdit = new JRadioButton();
JRadioButton rdbtnDisallowEdit = new JRadioButton();
//The Group, make sure only one button is selected at a time in the group
ButtonGroup editableGroup = new ButtonGroup();
editableGroup.add(rdbtnAllowEdit);
editableGroup.add(rdbtnDisallowEdit);
//add allow listener
rdbtnAllowEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.setEditable(true);
}
});
//add disallow listener
rdbtnDisallowEdit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textField.setEditable(false);
}
});
Mon Java est un peu rouillé, mais cela devrait être ce que vous cherchez.
Voici votre auditeur:
private RadioListener implements ActionListener{
private JTextField textField;
public RadioListener(JTextField textField){
this.textField = textField;
}
public void actionPerformed(ActionEvent e){
JRadioButton button = (JRadioButton) e.getSource();
// Set enabled based on button text (you can use whatever text you prefer)
if (button.getText().equals("Enable")){
textField.setEditable(true);
}else{
textField.setEditable(false);
}
}
}
Et voici le code qui le configure.
JRadioButton enableButton = new JRadioButton("Enable");
JRadioButton disableButton = new JRadioButton("Disable");
JTextField field = new JTextField();
RadioListener listener = new RadioListener(field);
enableButton.addActionListener(listener);
disableButton.addActionListener(listener);
Essaye ça:
JRadioButton myRadioButton = new JRadioButton("");
myRadioButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
// Do something here...
}
});
Une autre réponse à cette question. Modifiez un petit code à partir de la réponse de zalpha314.
Vous pouvez savoir quel bouton radio est sélectionné par le texte de ce bouton et vous pouvez également le savoir par Action Command. Dans le code de démonstration du bouton radio d’Oracle http://docs.Oracle.com/javase/tutorial/uiswing/examples/components/RadioButtonDemoProject/src/components/RadioButtonDemo.Java , j’ai appris à utiliser les commandes d’action.
Tout d'abord, définir deux commandes d'action
final static String ON = "on"
final static String OFF = "off"
Ajoutez ensuite une commande d'action aux boutons
JRadioButton enableButton = new JRadioButton("Enable");
enableButton.setActionCommand(ON);
JRadioButton disableButton = new JRadioButton("Disable");
disableButton.setActionCommand(OFF);
Donc, dans actionPerformed, vous pouvez obtenir la commande action.
public void actionPerformed(ActionEvent e){
String ac = e.getActionCommand();
if (ac.equals(ON)){
textField.setEditable(true);
}else{
textField.setEditable(false);
}
}
La commande d'action est peut-être préférable lorsque la chaîne button.getText()
est une très longue chaîne.