在JTabbedPane选项卡之间切换时更新JButton的问题

时间:2014-11-22 02:04:04

标签: java swing jbutton jtabbedpane changelistener

因此,我所遇到的问题可能最容易在图片中显示:

第一张照片是游戏板的一张照片 enter image description here

每个方块 - ' Plots' - 是JButtons。

点击Plot画面上方的一个JButtons - 即,' Buy Produce' - 相关的行动将会发生:

enter image description here

到目前为止,非常好。

但是,切换到其他任何一个标签 - '商品'或者'帮助' - 并切换回游戏'标签,我只能做到这一点:

enter image description here

我的想法是,在购买产品后我更新绘图显示的步骤应该可以在切换标签后更新显示,但它没有。

以下是我在购买产品时用来更新显示的代码:

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");
            }
        }
    });

我已尝试使用TabbedPane上的ChangeListener执行此操作,只是让Plot显示为空白'就像在第3张照片中一样。

tabbedPane.addChangeListener(new ChangeListener() {
        @Override
        public void stateChanged(ChangeEvent arg0) {
            plot_panel.removeAll();
            createPlots();
        }

    });

然而,显示器只是空白'直到我执行 - 通过显示屏上方的一个按钮 - 一个更新显示的动作。

(例如,如果显示为空白'我'购买产品',一切都按预期显示。)

这里有人可以告诉我,我发布了什么,出了什么问题以及在哪里?

如果需要,我很乐意发布更多代码,但我想我应尽量保持尽可能整洁。

提前致谢, 道格。

编辑:我不想浪费时间与糟糕的MCVE,所以这里 - http://1drv.ms/1Hx5sA1 - 是一个包含所有内容的压缩文件夹的链接。

如果有人不想浏览,那么我会尝试切换到JTable。

1 个答案:

答案 0 :(得分:0)

从plot_panel中删除并重新创建时,请调用

plot_panel.updateUI();