2010-05-18 60 views
2

我有一個4面板的java面板。當我點擊這些按鈕時,會出現一個新的框架,第一個框架將隱藏在setVisibile(false)中。 在新窗口上,我有另一個按鈕,但是當我點擊它時,我得到了與第一個窗口的第四個按鈕對應的事件。再次點擊按鈕就可以做到這一點,但當然這是不可接受的。 我錯過了什麼嗎?我只是展示框架與Java面板上的不良事件

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是一個Singleton。編輯2 更多信息。 我注意到在MAC OS上工作正常。這個問題只發生在Linux和Windows上。

+0

你能發佈其他按鈕的代碼嗎?特別是你的第四個按鈕。 – 2010-05-18 13:36:15

+0

補充,謝謝.. – lbedogni 2010-05-18 14:03:31

+0

您確定GraphicsTools.getInstance()。「somePanel」方法返回正確的實例嗎? – Gordon 2010-05-18 14:08:06

回答

1

由於您的鼠標偵聽器,必須發生這種情況。可能是它正在識別您的第一次點擊中的舊按鈕,它位於新按鈕的相同位置(這只是我的猜測)。

將鼠標偵聽器更改爲動作偵聽器。對於一個按鈕,如果你有動作監聽器就足夠了。

試試這個。

+0

它的工作原理!非常感謝。 – lbedogni 2010-05-28 10:24:11

0

嘗試在框架上調用revalidate()以改變其可行性。

編輯:

它可能是創建框架的東西。確保你在幀上調用'pack()'。

+0

嘗試過,但沒有改變。 – lbedogni 2010-05-18 14:59:39