У меня есть JPanel
, который отображает группу JLabels
, которые все вычисляются и печатаются на лету внутри метода.Содержимое меток хранится в ArrayList
. В другом методе большее количество объектов добавляется в ArrayList
через прослушиватель действий, например:
class listener implements ActionListener{
public void actionPerformed(ActionEvent a){
String name = myTextArea.getText();
Object temp = new Object(name);
myList.add(temp);
panel = createPanel();
panel.revalidate();
panel.repaint();
card.show(contentsPanel, "panel");
}
}
createPanel()
isчто берет ArrayList
и отображает его.
Это, конечно, немного абстракция, но идея остается.Проблема возникает, когда я пытаюсь обновить содержимое и внешний вид панели с помощью .revalidate()
и .repaint()
.Я знаю, что объекты находятся в ArrayList, как я его тестировал, но панель перерисовывает себя неправильно.
Есть предложения?При необходимости я могу предоставить дополнительную информацию или код.
По запросу я включу код.Я не могу прикрепить все это из-за размера, но вот метод, на который оно ссылается:
private JPanel createPanel() {
panel = new JPanel();
panel.setLayout(new GridLayout(myList.size(), 1));
panel.setBackground(new Color(250, 250, 250));
for(int i = 0; i < myList.size(); i++){
JLabel temp = new JLabel(myList.get(i).toString());
panel.add(temp);
}
return panel;
}