Таким образом, проблема у меня, наверное, проще всего рисункам:Проблема с обновлением JButtons при переключении между вкладками JTabbedPane
Это первая картина выстрел из доски игры
Каждый из этих квадратов - «Сюжеты» - это JButtons.
При нажатии одной из указанных выше дисплея участка JButtons - то есть, «Купить произведут» - ассоциированная действие будет происходить:
До сих пор, так хорошо.
Но о переходе на любой из других вкладок - «Товары» или «Справка» - и переключение обратно на вкладку «игры», я только когда-либо были в состоянии иметь это произошло:
Мое мышление заключается в том, что шаги, которые я предпринимаю для обновления дисплея Plot после покупки Produce, должны отлично работать, чтобы обновлять дисплей после переключения вкладок, но это не так.
Вот код, я использую для обновления дисплея при покупке продукции:
buyProduce.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
try {
buyProduce();
plot_panel.removeAll();
createPlots();
labelStore.get("Cash_Label").setText(game.roundedWorth());
} catch (IOException e) {
e.printStackTrace();
} catch (BankruptException e) {
JOptionPane.showMessageDialog(frame,
"Bankrupt after attempt to purchase Produce");
}
}
});
Я пытался сделать это с ChangeListener на TabbedPane, только для отображения Plot идти «пустой», как в 3-е изображение.
tabbedPane.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent arg0) {
plot_panel.removeAll();
createPlots();
}
});
Однако дисплей только «пустой», как это, пока я не выполнить - через одну из кнопок, расположенных над дисплеем - действие, которое обновляет дисплей.
(Если, например, когда дисплей «пустой» Я «покупать продукцию», все, кажется, как это должно быть.)
Может кто-нибудь здесь сказать, от того, что я писал, что происходит не так и где?
Я рад опубликовать больше кода, если необходимо, но подумал, что я должен попытаться сохранить это как можно более аккуратным.
Заранее благодарен, Doug.
EDIT: Я не хотел тратить время людей с плохой MCVE, поэтому здесь - http://1drv.ms/1Hx5sA1 - это ссылка на сжатую папку со всеми вещами в ней.
Если люди не хотят травить через это, я попробую переключиться на JTable.
Вы должны 'перепроверить()' и 'перекрасить()' 'plot_panel' после удаления и добавления компонентов. Но я почти хочу сказать, может быть, нам стоит искать другой дизайн, но просто недостаточно информации, чтобы уйти. –
Просто попробовал вставить plot_panel.revalidate() и plot_panel.repaint() после plot_panel.removeAll(); и после createPlots(); (а затем и то, и другое), но никаких изменений. Должен ли я вставлять свой (довольно большой) класс в OP, или какой-то внешний, как PasteBin? –
Для получения более полной помощи отправьте [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). Это просто путь к небольшому коду, чтобы уйти. –