2015-01-08 66 views
0

如何執行每個不同的動作單擊只有一個JButton的.. 請幫助我.. 這裏是我的代碼..上的JButton按下多個點擊

btn1.addActionListener(new ActionListener(){ 
     int clicks; 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      //throw new UnsupportedOperationException("Not supported yet."); 

      Object source = e.getSource(); 
      if(source == btn1){ 
       clicks++; 
       if(clicks==1){ 
        txt1.setText("a"); 
        clicks=0; 
       } 
       if(clicks==2){ 
        txt1.setText("b"); 
        clicks=0; 
       } 
       if(clicks==3){ 
        txt1.setText("c"); 
        clicks=0; 
       } 
      } 

     } 

    }); 

請幫助我..

+1

不要復位點擊次數,直到達到3按鈕不是用來檢測多個鼠標點擊一個不錯的選擇,它的不是他們爲什麼設計的 – MadProgrammer

回答

1

您應該使用MouseListener/Adapter而非ActionListener,實施mouseClicked,並使用MouseEvent.getClickCount()

+0

MouseListeners是一個壞主意,因爲按鈕可以由鍵盤和程序觸發,它們都不會觸發MouseListener。一般來說,按鈕對於操作似乎試圖實現的內容來說是一個糟糕的選擇 – MadProgrammer

+0

@MadProgrammer在這裏不同意你的看法。如果OP真的想要你提出的,他/他會選擇另一種解決方案。看來OP確實希望將點擊次數用作一系列快速點擊來設置標籤。 – ControlAltDel

+0

在我看來,OP不知道自己在做什麼......你可以用汽車當船,但它不會像船一樣工作...... – MadProgrammer

0

您正在重置click每一個動作,因此只得到行動「一個」。

btn1.addActionListener(new ActionListener(){ 
     int clicks; 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      //throw new UnsupportedOperationException("Not supported yet."); 

      Object source = e.getSource(); 
      if(source == btn1){ 
       if(clicks%3 == 0){ 
        txt1.setText("a"); 
       } 
       if(clicks%3 == 1){ 
        txt1.setText("b"); 
       } 
       if(clicks%3 ==2){ 
        txt1.setText("c"); 
       } 
       clicks++; 
      } 

     } 

    }); 
+0

爲什麼應該使用這個在其他解決方案? – MadProgrammer

+0

@MadProgrammer,因爲它到達其他輸出或我錯過了什麼? – Dawnkeeper

+0

不要告訴我,告訴操作。在一個按鈕上傾倒一堆代碼,最有幫助的 – MadProgrammer