我试图使用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:
谢谢!
答案 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个实例。