2011-03-02 62 views
1

當我按JLabel時,我得到一個mousePressed事件調用,其中我想禁用JButton。然而,沒有任何反應。爲什麼是這樣?java setEnable(false)不起作用

這裏是JLabelmousePress事件處理程序:

public void mousePressed(MouseEvent e) { 
    get_clickevent(false) 
} 

下面是獲得上mousePressed調用該函數:

public void get_clckevent(final boolean value){ 

    java.awt.EventQueue.invokeLater(new Runnable() { 

     boolean valu = value; 

     public void run() { 

      if (valu == false) {     
       btnSave.setEnabled(false); //here is button that does not disable. 
      } 
     } 
    }); 
+0

runnable是否被調用?嘗試將其直接放入get__clcevent – 2011-03-02 00:25:14

+2

因爲get_clckevent方法已在EDT上調用,所以此處不需要EventQueue.invokeLater。但是我可以從你的文章中得出結論,主要是你的錯誤不包含在你發佈的任何代碼中。如果您還沒有解決這個問題,請簡化您的代碼,創建一個[SSCCE](http://SSCCE.org)並將其發佈到此處。 – 2011-03-02 01:11:16

+0

你確定你打電話正確嗎?您可以調用get_clickevent(),但在get_clckevent()中禁用按鈕;它可能是一個例子中的錯字。 – 2011-03-03 11:29:01

回答

1

你的代碼看起來沒有問題。確保btnSave實際上指向你認爲它的按鈕。還要確保您的鼠標事件實際發生。 (在某處添加println以確保您的按鈕真正設置爲禁用)。

而且代替:

if (valu == false) { 

只要做到:

if (!valu) { 

什麼是這條線的點:

boolean valu = value; 

只是在你的,如果使用值,而不是VALU聲明。

+0

是按鈕是相同的,我想禁用,但沒有發生。是否有問題在事件派發線程?。這個按鈕是桂建造者按鈕(拖放)不是由手工編碼創建的。 – 2011-03-02 00:26:22

+0

你確定它是正確的按鈕,你做了println嗎?另外,不要手動使用GUI Builder代碼,特別是如果您正在學習Swing。 – jzd 2011-03-02 00:27:48

+0

是的,我使用了println()。它確定但按鈕satus不會改變 – 2011-03-02 00:31:40

相關問題