将多个ButtonGroup放在一个JFrame中

时间:2017-11-25 18:36:51

标签: java swing jframe jpanel jbutton

我试图使用ButtonGroup将多个JButton放在一个帧上。

我必须在一个框架上放置3组按钮,彼此分开。

以下代码确实创建了按钮,但它们似乎并没有被分开,而是“删除”#34;彼此。

我希望看到一组独立的按钮,每个按钮4个按钮。

该方法接受"问题"的ArrayList。对象,看起来像这样:

public class Question {
private String _question;
private String _option1;
private String _option2;
private String _option3;
private String _option4;
}

这是方法。它位于一个类中,从另一个类继承一个框架," DisplayOnPanel"将面板设置在同一帧上。 "这"是指框架:

public void addButtonstoFrame(ArrayList<Question> q){
    ArrayList<ButtonGroup> BG = new ArrayList<>();
    ArrayList<JPanel> JP = new ArrayList<>();

    JLabel question1 = new JLabel();
    int j=0;
    for (int i = 0; i <q.size() ; i++) {
        BG.add(new ButtonGroup());
        JP.add(new JPanel());
        JRadioButton option1 = new JRadioButton(q.get(i).get_option1());
        JRadioButton option2 = new JRadioButton(q.get(i).get_option2());
        JRadioButton option3 = new JRadioButton(q.get(i).get_option3());
        JRadioButton option4 = new JRadioButton(q.get(i).get_option4());
        BG.get(j).add(option1);
        BG.get(j).add(option2);
        BG.get(j).add(option3);
        BG.get(j).add(option4);
        JP.get(j).add(option1);
        JP.get(j).add(option2);
        JP.get(j).add(option3);
        JP.get(j).add(option4);


        this.setLayout(new BorderLayout()); //this referes to a frame
        this.add(JP.get(j)); //this referes to a frame
        JP.get(i).setLocation(j+10,j+10);
        JP.get(j).setVisible(true);
        this.setVisible(true);//this referes to a frame
        j++;
    }

}

结果只有4个butoons,而不是12:

result

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,变量名不应以大写字符开头。

    JRadioButton option1 = new JRadioButton(q.get(i).get_option1());
    JRadioButton option2 = new JRadioButton(q.get(i).get_option2());
    JRadioButton option3 = new JRadioButton(q.get(i).get_option3());
    JRadioButton option4 = new JRadioButton(q.get(i).get_option4());
    BG.get(j).add(option1);
    BG.get(j).add(option2);
    BG.get(j).add(option3);
    BG.get(j).add(option4);
    JP.get(j).add(option1);
    JP.get(j).add(option2);
    JP.get(j).add(option3);
    JP.get(j).add(option4);

组件只能属于单个父容器。

当您将按钮添加到&#34; JP&#34;包含,您将其从&#34; BG&#34;容器

因此,您需要为每个单选按钮创建另外4个实例。