【发布时间】:2017-11-25 18:36:51
【问题描述】:
我正在尝试使用 ButtonGroup 将多个 JButtons 放在一个框架上。
我必须将 3 组按钮放在一个框架上,彼此分开。
以下代码确实创建了按钮,但它们并没有被分开,而是似乎在相互“删除”。
我希望看到单独的按钮组,每组 4 个按钮。
该方法接受“问题”对象的 ArrayList,如下所示:
public class Question {
private String _question;
private String _option1;
private String _option2;
private String _option3;
private String _option4;
}
方法如下。它位于从另一个类“DisplayOnPanel”继承框架的类中,用于将面板设置在同一框架上。 “this”指的是一个框架:
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 个按钮,而不是 12 个:
谢谢!
【问题讨论】:
-
请始终包含完整的代码示例 (SSCCE)。
-
实际上是很多代码,上次有人告诉我不要发布我的整个代码:-(
-
现在不会告诉您发布整个代码。如需尽快获得更好的帮助,请发布minimal reproducible example 或Short, Self Contained, Correct Example。 @Amber 的提示:
[mcve]在评论中自动扩展为 minimal reproducible example。 -
我猜他们的关键字是“短”。您不应该发布您的整个代码,但您应该发布一个显示问题的最小完整示例。即具有主要方法的类。
-
您确定要使用 BorderLayout 吗?我认为这就是让你失望的原因。
标签: java swing jframe jpanel jbutton