Radiobutton deaktivieren

Hallo zusammen,
ich hab ein Problem, weiss auch nicht ob man das in Java beheben kann, aber vielleicht kann mir ja jemand helfen.

Ich hab zwei Radiobuttongroups in meinem Programm. So nun kann ich jeweils einen Button pro Group auswählen und das passt ja auch.

Nun meine Frage. Wenn ich in der ersten Radiobuttongroup einen Button auswähle möchte ich, dass der Button in der der zweiten nicht mehr aktiviert ist. Geht denn sowas?

Vielen Dank für die Hilfe

Armin

Hallo!

Zuerst einmal. Ich hab es nicht geschafft, die RadioButtons zu deselektieren, aber deaktivieren funktioniert.

Du möchtest wissen, welcher ButtonGroup ein ausgewählter RadioButton angehört? Theoretisch kannst Du die ButtonGroup fragen, denn die Methode getElements() gibt Enumeration zurück.

An Deinen RadioButtons muss ein ActionListener angebunden sein, der die Selektion des Buttons meldet.
Hast Du sowas schon mal programmiert?
Es wird ein ActionEvent an die Methode actionPerformed übergeben. In diesem ActionEvent befindet sich die Referenz auf das verursachende Objekt (dem Button also). Bei „ActionEvent e“ wäre die Referenz mit e.getSource() zu bekommen.

Die ButtonGroups müssen klassenweit deklariert sein, damit Du auf sie aus der Methode actionPerformed heraus zugreifen kannst.

Beispiel:

public class Test extends JFrame implements ActionListener{
private ButtonGroup group1, group2;

public Test(){
setSize(200,300);
setDefaultLookAndFeelDecorated(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle(„JRadioButton-Test“);

JRadioButton radio1 = new JRadioButton(„JRadioButton1“);
radio1.addActionListener(this);
JRadioButton radio2 = new JRadioButton(„JRadioButton2“);
radio2.addActionListener(this);
JRadioButton radio3 = new RadioButton(„JRadioButton4“);
radio3.addActionListener(this);
JRadioButton radio4 = new JRadioButton(„JRadioButton4“);
radio4.addActionListener(this);

JButton resetButton = new JButton(„Zurücksetzen“);
resetButton.addActionListener(this);
resetButton.setActionCommand(„reset“);

group1 = new ButtonGroup();
group1.add(radio1);
group1.add(radio2);

group2 = new ButtonGroup();
group2.add(radio3);
group2.add(radio4);

JPanel radioPanel = new JPanel();
radioPanel.add(radio1);
radioPanel.add(radio2);
radioPanel.add(radio3);
radioPanel.add(radio4);
radioPanel.add(resetButton);

getContentPane().add(radioPanel);
pack();
setVisible();
}

public void actionPerformed(ActionEvent e) {

Enumeration enumeration1 = group1.getElements();
Enumeration enumeration2 = group2.getElements();

if(e.getSource() instanceof JRadioButton){
JRadioButton radio = (JRadioButton) e.getSource();

enumeration1 = group1.getElements();

while(enumeration1.hasMoreElements()){
if(((JRadioButton) enumeration1.nextElement()).equals(radio)){
enumeration2 = group2.getElements();
while(enumeration2.hasMoreElements()){
((JRadioButton) enumeration2.nextElement()).setEnabled(false);
}
return;
}
}

enumeration1 = group1.getElements();
while(enumeration1.hasMoreElements()){
((JRadioButton) enumeration1.nextElement()).setEnabled(false);
}
}
else if(e.getActionCommand().equals(„reset“)){
JRadioButton radio;
while(enumeration1.hasMoreElements()){
radio = ((JRadioButton) enumeration1.nextElement());
radio.setEnabled(true);
}

while(enumeration2.hasMoreElements()){
radio = ((JRadioButton) enumeration2.nextElement());
radio.setEnabled(true);
radio.setSelected(false);
}
}
}

}

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]