java面板上的错误事件

时间:2010-05-18 13:15:51

标签: java swing jframe jpanel jbutton

我有一个带有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上发生。

2 个答案:

答案 0 :(得分:1)

由于您的鼠标侦听器,必须发生这种情况。可能是在第一次点击时识别旧按钮,该按钮位于新按钮的相同位置(这只是我的猜测)。

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

试试这个。

答案 1 :(得分:0)

在改变生存能力时,请尝试在框架上调用revalidate()

编辑:

它可能是创建框架的东西。确保你在框架上调用'pack()`。