Я пытаюсь динамически нарисовать JPanel (который находится внутри ScrollPane), кучу ярлыков и RadioButtons. Я получаю ArrayList с объектами «Advice», и я хочу перебирать их, чтобы представить их таким образом, что у меня есть ярлык, который их описывает, а затем два переключателя (для выбора «Да» или «Нет»).Добавление компонентов по коду
Но на данный момент, с этим кодом в конструктор 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 правильно; Я уже проверил это. Кажется, что проблема заключается в окраске компонентов.
Поскольку я всегда использую создателя GUI NetBeans, я не очень привык добавлять компоненты через код. Кто-нибудь может мне помочь? Наверное, я что-то пропустил.
Редактировать: Обратите внимание, что «вопросы» - это объект ScrollPane!
редактировать 2: Это «вопросы» панели должны иметь все эти компоненты окрашены: http://i.imgur.com/tXxROfn.png
попробуйте 'pack()' метод на вашей панели – coolguy
Попробуйте показать нам вашу лучшую попытку [mcve] (пожалуйста, проверьте ссылку). Также размещайте изображения того, что вы видите и чего вы пытаетесь достичь. Это поможет нам лучше понять вашу проблему. –
Я думаю, что теперь более понятно и проще отлаживать – Zerok