web-dev-qa-db-fra.com

Action Listener sur un bouton radio

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?

9
agarwav

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);

        }
    });
7
pbible

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);
5
zalpha314

Essaye ça:

JRadioButton myRadioButton = new JRadioButton("");
myRadioButton.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
      // Do something here...
    }
});
3
GETah

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.

0
xmpy