This question already has an answer here:
Swings setSelected() not working for array of JRadioButtons [closed]

(1个答案)


7年前关闭。





在这里,我做了一个虚拟的程序。

  import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;
  class MyClass1 implements ActionListener
  {
JFrame fr;
JRadioButton opt[]=new JRadioButton[2];
JButton btnext;
JRadioButton r1;
MyClass1()
{
    fr=new JFrame();
    fr.setLayout(null);
    opt[0]=new JRadioButton("Hello");
    opt[1]=new JRadioButton("Welcome");
    r1=new JRadioButton("Jealsous");
    btnext=new JButton();
    ButtonGroup bg=new ButtonGroup();
    bg.add(opt[0]);
    bg.add(opt[1]);
    opt[0].setBounds(50,100,200,30);
    r1.setBounds(50,200,200,30);
    opt[1].setBounds(50,150,200,30);
    btnext.setBounds(400,350,100,30);
    fr.add(opt[1]);
    fr.add(opt[0]);
    fr.add(btnext);
    fr.add(r1);
    btnext.addActionListener(this);
    fr.setSize(800,500);
    fr.setVisible(true);
}
 public void actionPerformed(ActionEvent e)
        {
            System.out.println(opt[0].getText());
            opt[0].setSelected(false); //not working
            r1.setSelected(false);  //working
        }
    public static void main(String[] s)
        {
            new MyClass1();
        }
    }


在这段代码中,当我单击按钮radiobutton时,它是一个数组
opt [0]仍处于选中状态。
而未选择单选按钮r1。因此,基本上,当我用对象数组调用函数setSelected时,它什么都不做;当我用不同的对象调用时,它工作正常。在大程序中,我需要对象数组,以便可以在for循环中使用它并将其初始化为String 2Dimensional Array中的某个值。

最佳答案

您可以执行buttonGroup.clearSelection()

但是此方法仅在Java 1.6+中可用。

http://java.sun.com/javase/6/docs/api/javax/swing/ButtonGroup.html#clearSelection()

@Override
 public void actionPerformed(ActionEvent e)
        {
            System.out.println(opt[0].getText());
            bg.clearSelection();
            r1.setSelected(false);  //working
        }

10-08 04:00