91 Stimmen

Wie bekomme ich heraus, welcher JRadioButton aus einer ButtonGroup ausgewählt ist?

Ich habe eine Swing-Anwendung, die Optionsfelder in einem Formular enthält. Ich habe die ButtonGroup Wenn ich mir jedoch die verfügbaren Methoden ansehe, kann ich den Namen der ausgewählten Methode nicht herausfinden. JRadioButton . Hier ist, was ich bis jetzt sagen kann:

  • Von ButtonGroup aus kann ich eine getSelection() zur Rückgabe der ButtonModel . Von dort aus kann ich eine getActionCommand aber das scheint nicht immer zu funktionieren. Ich habe verschiedene Tests ausprobiert und unvorhersehbare Ergebnisse erhalten.

  • Auch von ButtonGroup kann ich eine Aufzählung von getElements() . Allerdings müsste ich dann jede Schaltfläche in einer Schleife durchlaufen, um zu prüfen, ob sie ausgewählt ist.

Gibt es eine einfachere Methode, um herauszufinden, welche Schaltfläche ausgewählt wurde? Ich programmiere dies in Java 1.3.1 und Swing.

0voto

CoderBrain Punkte 103

Verwenden Sie die isSelected() Methode. Sie zeigt Ihnen den Zustand Ihres radioButtons an. In Kombination mit einer Schleife (z. B. for-Schleife) können Sie herausfinden, welcher Button ausgewählt wurde.

0voto

Shanaya Punkte 11
import java.awt.*;
import java.awt.event.*;
import javax.swing.*; 
public class MyJRadioButton extends JFrame implements ActionListener
{
    JRadioButton rb1,rb2;  //components
    ButtonGroup bg;
    MyJRadioButton()
{
    setLayout(new FlowLayout());
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    rb1=new JRadioButton("male");
    rb2=new JRadioButton("female");

    //add radio button to button group
    bg=new ButtonGroup();
    bg.add(rb1);
    bg.add(rb2);

    //add radio buttons to frame,not button group
    add(rb1);
    add(rb2);
    //add action listener to JRadioButton, not ButtonGroup
    rb1.addActionListener(this);
    rb2.addActionListener(this);
    pack();
    setVisible(true);
}
public static void main(String[] args)
{
    new MyJRadioButton(); //calling constructor
}
@Override
public void actionPerformed(ActionEvent e) 
{
    System.out.println(((JRadioButton) e.getSource()).getActionCommand());
}

}

0voto

Andy McRae Punkte 381

Die Antwort von Ale Rojas funktioniert gut:

Als Alternative können Sie auch die My_JRadiobutton11.addActionListener(this); auf Ihrem JButton und machen Sie dann Ihre Aktionen in der actionPerformed-Funktion wie diese (Es verwendet nur eine zusätzliche Variable, die Sie instanziieren müssen (z. B. Private String Auswahl;) aber es ist keine große Sache):

public void actionPerformed(ActionEvent arg0) {
      if(arg0.getSource() == My_JRadiobutton11){
          //my selection
          selection = "Become a dolphin";
      }else if(arg0.getSource() == My_JRadiobutton12){
          //my selection
          selection = "Become a Unicorn";
      } ..etc 
 }

-3voto

Chobicus Punkte 1944
jRadioOne = new javax.swing.JRadioButton();
jRadioTwo = new javax.swing.JRadioButton();
jRadioThree = new javax.swing.JRadioButton();

... dann für jede Taste:

buttonGroup1.add(jRadioOne);
jRadioOne.setText("One");
jRadioOne.setActionCommand(ONE);
jRadioOne.addActionListener(radioButtonActionListener);

...Hörer

ActionListener radioButtonActionListener = new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                radioButtonActionPerformed(evt);
            }
        };

...tun, was immer Sie als Reaktion auf das Ereignis benötigen

protected void radioButtonActionPerformed(ActionEvent evt) {            
       System.out.println(evt.getActionCommand());
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X