it-swarm.com.de

Aktionslistener auf einem Optionsfeld

Ich möchte die bearbeitbare Option eines Textfelds basierend auf der Auswahl eines Optionsfelds einstellen. Wie wird der Aktionslistener auf das Optionsfeld geschrieben?

9
agarwav

Dies ist die Lösung, die ich in diesem Fall verwenden würde.

    //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

Mein Java ist ein bisschen rostig, aber es sollte genau das sein, wonach Sie suchen.

Hier ist dein Hörer:

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

Und hier ist der Code, der es aufstellt. 

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

Versuche dies:

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

Versuche dies:

import Java.awt.*;
import javax.swing.*;
import Java.awt.event.*;
public class NewStudent {
    public static void main(String[] args){
        NewStudent st=new NewStudent();
    }

    public NewStudent(){
        JFrame frame=new JFrame("STUDENT REGISTRATION FORM");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800,600);
        frame.setVisible(true);

        JPanel p1=new JPanel();
        p1.setLayout(null);
        p1.setBackground(Color.CYAN);

        frame.add(p1);
        ButtonGroup buttonGroup=new ButtonGroup();
        JRadioButton male=new JRadioButton("MALE");
        male.setBounds(100,170,100,20);
        buttonGroup.add(male);
        p1.add(male);
        JRadioButton female=new JRadioButton("FEMALE");
        female.setBounds(250,170,100,20);
        buttonGroup.add(female);
        p1.add(female);
        JLabel sex =new JLabel("SEX:");
        sex.setBounds(10,200,100,20);
        p1.add(sex);
        final JTextField gender= new JTextField();
        gender.setBounds(100,200,300,20);
        p1.add(gender);

        male.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ie){
                gender.setText("MALE");
            }
        });

        female.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ie){
            gender.setText("FEMALE");
        }
    });
}

Eine andere Antwort auf diese Frage. Ändern Sie einen kleinen Code aus der Antwort von zalpha314.

Sie können wissen, welches Optionsfeld durch den Text dieser Schaltfläche ausgewählt ist, und Sie können es auch über den Aktionsbefehl kennen. Im Oracle-Optionsschaltflächen-Optionscode von Oracle http://docs.Oracle.com/javase/tutorial/uiswing/examples/components/RadioButtonDemoProject/src/components/RadioButtonDemo.Java habe ich gelernt, wie Sie den Aktionsbefehl verwenden.

Definieren Sie zunächst zwei Aktionsbefehle

final static String ON = "on"
final static String OFF = "off"

Fügen Sie dann den Schaltflächen den Aktionsbefehl hinzu

JRadioButton enableButton = new JRadioButton("Enable");
enableButton.setActionCommand(ON);
JRadioButton disableButton = new JRadioButton("Disable");
disableButton.setActionCommand(OFF);

In actionPerformed könnten Sie also den Aktionsbefehl erhalten.

public void actionPerformed(ActionEvent e){
    String ac = e.getActionCommand();
    if (ac.equals(ON)){
        textField.setEditable(true);
    }else{
        textField.setEditable(false);
    }
}

Aktionsbefehl möglicherweise besser, wenn button.getText() eine sehr lange Zeichenfolge ist.

0
xmpy