2

我有一个带有 4 个按钮的 Java 面板。当我单击这些按钮时,会出现一个新框架,第一个框架用 隐藏setVisibile(false)。在那个新窗口上,我有另一个按钮,但是当我单击它时,我得到了与第一个窗口的第四个按钮相对应的事件。再次单击该按钮可以解决问题,但这当然是不可接受的。我错过了什么吗?我只是用

nameOfTheFrame.setVisible(true);

我在每个按钮上都有 MouseListeners。

最后一个按钮的代码很简单:

System.exit(0);

编辑

示例代码:

    private void btn_joinGamePressed(java.awt.event.MouseEvent evt) {
            GraphicsTools.getInstance().getCreateGame().setVisible(false);
            GraphicsTools.getInstance().getMainPanel().setVisible(false);
            GraphicsTools.getInstance().getRegistration().setVisible(true);
}

GraphicsTools 是一个单例。

编辑 2 更多信息。我注意到在 MAC OS 上运行良好。该问题仅发生在 Linux 和 Windows 上。

4

2 回答 2

1

这一定是因为您的鼠标侦听器而发生的。可能是在您第一次单击时识别旧按钮,它与新按钮位于同一位置(这只是我的猜测)。

将鼠标侦听器更改为动作侦听器。对于一个按钮,如果你有动作监听器就足够了。

尝试这个。

于 2010-05-20T13:17:47.007 回答
0

revalidate()当你改变它们的生存能力时,试着调用框架。

编辑:

这可能与框架的创建有关。确保您在框架上调用“pack()”。

于 2010-05-18T14:48:31.197 回答