Итак, в моем коде у меня есть рамка с панелью меню, которая позволяет мне добавлять панели. Одна панель имеет несколько текстовых полей, через которые я строю объекты, добавляю их в ArrayList и затем отображаю их в JList.
Моя проблема в том, что когда я нажимаю кнопку, которая строит объект, панель не обновляется. чтобы немедленно показать содержимое JList, мне нужно вызвать панель из панели меню, чтобы она заработала.
Так что это часть, где я собираю JList и заполняю его, если существует ArrayList (эта часть находится в конструкторе панели):
listModel = new DefaultListModel();
if (!MainInterface.listCat.isEmpty()) {
for (CategorieArticle c : MainInterface.listCat) {
listModel.addElement(c.toString());
}
}
list = new JList(listModel);
И это метод кнопки, который создает объекты и добавляет их в ArrayList (эта часть находится в методе ActionListener):
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if (o == bEnr) {
if (tfNoCat.getText().isBlank() || tfNomCat.getText().isBlank()) {
} else {
MainInterface.listCat.add(new CategorieArticle(tfNomCat.getText()));
tfNoCat.setText("");
tfNomCat.setText("");
mainPanel.revalidate();
mainPanel.repaint();
}
}
}
Проблема в том, что .revalidate () и .repaint () не обновляют Panel для нее до go через первый фрагмент кода и заполняют JList .
Любая помощь будет принята с благодарностью.