将jradiobutton中的选定项设置为多个

时间:2016-10-20 08:15:25

标签: java swing oop jradiobutton

我有一个JRadioButton,我必须将所选项目设置为12,然后如果已经达到12,则会禁用/灰显其他选项。

我所知道的是,如果您将JRadioButton添加到ButtonGroup中,那么会将所选项目设置为1,但不会设置为多个,这是我的目标。

这可能吗?有没有方法/方法如何做到这一点?感谢您的任何建议:)

2 个答案:

答案 0 :(得分:2)

创建JRadioButtons的arraylist。每次用户单击JRadioButton(已启用)时,请浏览列表并计算已启用的JRadioButtons数量。如果计数大于或等于12,则禁用所有其他radioButtons,直到用户取消选择。

这只是解决这个问题的众多方法之一,

希望这有帮助。

//initiate jradiobutton arraylist (this will be a field at top of class)
buttons = new ArrayList<JRadioButtons>();

//Create buttons with a listener attached
JRadioButton b1 = new JRadioButton("RadioButton One");
b1.setActionListener(myActionListener);
b1.setActionCommand("select");
buttons.add(b1);

//Add rest of buttons in the same way
JRadioButton b2...

//Add the radio buttons to your panel and such

现在,当用户点击您的某个按钮时,您的actionlistener将会触发,您可以在这里检查启用的数量

public void actionPerformed(ActionEvent e){
    //Check if action was a jradiobutton
    if(e.getActionCommand().equals("select")){

        int count = 0;
        //Here check the amount of buttons selected
        for(JRadioButton button: buttons){
            if(button.isSelected()) count++;
        }

        //Now check if count is over 12
        if(count > 12){
            for(JRadioButton button: buttons){
                 //if the button trying to activate when 12 already have been, disable it
                 if(button.equals(e.getSource()) button.setSelcted(false);
            }
        }
    }
}

这应该在已经选中时禁用按钮,并且只允许用户选择arraylist中的12个按钮。

答案 1 :(得分:2)

Content-Type是错误的类型,因为用户希望仅选择一个。 您最好将JRadioButtonSSCCE中的自定义JCheckBox一起使用:

ActionListener