2017-02-05 39 views
0

我已經構建了一個GUI來統計點擊次數。問題是,當我按下重置按鈕,然後單擊增量它繼續添加到舊計數器。我在這裏先向您的幫助表示感謝。按鈕點擊計數器無法正常工作

private class MyEventHandler implements ActionListener 
{ 
    private JTextField counter; 
    private int clicks; 

    public MyEventHandler(JTextField counter) 
    { 
     this.counter = counter; 
    } 

    @Override 
    public void actionPerformed(ActionEvent event) 
    { 
     if (event.getSource() == increment) 
     { 
      clicks++; 
      counter.setText("Number of increments: " + clicks); 

     } 
     else if (event.getSource() == reset) 
     { 
      clicks = 0; 
      counter.setText("Number of increments: " + clicks); 
     } 
    } 

} 
+0

確定'如果(event.getSource()==復位)'返回TRUE;如果你按一下復位按鈕? – Blobonat

+0

是的,因爲它然後顯示增量數:0 –

+0

嘗試在構造函數中將'clicks'初始化爲'0'作爲'this.clicks = 0;'! –

回答

1

您需要將clicks變量作爲static。靜態變量在所有對象之間共享,因此,當getSource() == reset時,將爲每個事件處理程序重新安裝clicks

或者

您可以到這兩個按鈕提供常見的動作監聽:

MyEventHandler meh = new MyEventHandler(); 
increment.setActionListener(meh); 
reset.setActionListener(meh); 
+1

'clicks'是一個私人會員,可以通過公開的方式輕鬆訪問。那麼需要將它變成靜態的呢? –

+1

這不是關於「私人」或「公共」訪問。看到當你點擊增量按鈕時,你增加了該按鈕的點擊並顯示。但是,當您重置時,您只需重置點擊重置按鈕而不是遞增按鈕。因此,您的增量按鈕從舊計數開始計數。 – BhalchandraSW

+0

謝謝我只是將按鈕添加到2個不同的ActionListener對象 –