我试图动态地绘制到JPanel(在ScrollPane中),一堆标签和RadioButtons。我收到一个带有"建议"的ArrayList。对象,我想迭代它们以我描述它们的标签来表示它们,然后,两个单选按钮(选择"是"或"否") 。
但目前,在JFrame的构造函数中使用此代码,它无法正常工作:
// My constructor
public CoachingFrame(AdvicesManager am) {
initComponents();
this.am = am;
// I set the layout for the inner panel (since ScrollPane doesn't allow BoxLayout)
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
// Iterate over the arraylist
for(int i=0;i<am.advices.size();i++){
//Add elements to the panel
panel.add(new JLabel( am.advices.get(i).getQuestion()));
ButtonGroup group = new ButtonGroup();
// Group the RadioButtons inside another panel, so I can use FlowLayout
JPanel buttonsPanel = new JPanel();
buttonsPanel.setLayout(new FlowLayout());
JRadioButton rad1 = new JRadioButton();
JRadioButton rad2 = new JRadioButton();
group.add(rad1);
group.add(rad2);
buttonsPanel.add(rad1);
buttonsPanel.add(rad2);
// Add the radiobuttons' panel to the main one, and revalidate
panel.add(buttonsPanel);
panel.revalidate();
}
// Finally, add the panel to the ScrollPane.
questions.add(panel);
}
我正确收到了arraylist;我已经检查过了。问题似乎是在绘制组件时。
由于我总是使用NetBeans GUI创建器,因此我不习惯通过代码添加组件。有人能帮我吗?我想我在这里遗漏了一些东西。
编辑:注意&#34;问题&#34;是ScrollPane对象!
编辑2:这个&#34;问题&#34;小组应该绘制所有这些组件:http://i.imgur.com/tXxROfn.png
答案 0 :(得分:2)
正如Kiheru所说,ScrollPane不允许使用.add()添加视图(比如我的JPanel),相反,我必须使用.setViewportView(Component)。现在它工作得很好,谢谢!