2011-01-14 114 views
4
private void button_Clicked_download(MouseEvent e) { 
     button_dl.setEnabled(false); 
     System.out.println("Button Clicked."); 
} 

工作當我點擊按鈕,按鈕看起來禁用。然而,該按鈕仍然執行MouseEvent下的代碼,我看到「Button Clicked」。在調試控制檯中。按鈕事件仍然禁用按鈕

我怎樣才能使它所以如果單擊按鈕,它忽略該代碼並確實禁用?

+0

添加「鞦韆」標籤 – 2011-01-14 17:06:29

回答

10

但是,該按鈕仍然執行MouseEvent下的代碼,我看到「Button Clicked」。在調試控制檯中。

這正是爲什麼你不應該使用帶有JButton的MouseListener,而是使用ActionListener。解決方法當然是顯而易見的 - 擺脫的MouseListener的,而是添加一個ActionListener感興趣的JButton。

+1

謝謝。我忘記了ActionListener。我改變了它,它現在完美。謝謝。 =) – Kyle 2011-01-14 17:03:39

1

你需要使用一個ActionListener而不是MouseClickListener。即使是禁用,因此點擊事件將執行

1

其實是有啓用和禁用Java中的一個按鈕,使用鼠標監聽的一個非常簡單的方法

您的按鈕被點擊邏輯。

class HoldListen extends MouseAdapter { 

    @Override 
    public void mousePressed(MouseEvent e) { 
     JButton bt = (JButton)e.getSource(); 

     if (!bt.isEnabled()) { 
      return; 
     } 

     // Do code 
    } 
} 

,我發現你的問題,而試圖建立類似的東西,這是我如何解決它。 所有的MouseListener的方法返回void所以它的作品了相當不錯的。在我的情況要回一個ActionListener將需要大量的額外工作,而一個MouseListener的是完美的人選。按下一個變量釋放undid,另一個線程在持續模擬中使用該變量。