2013-12-08 58 views
0

我有問題,我不明白,如何正確使用JButton Java定時器。Java定時器使用JButtons

的什麼,我需要的想法 -
當我點擊JButton的文本「0」,然後開始計時從2秒計數,直到爲零。
當按鈕被釋放時,程序檢查情況:
如果計時器現在爲0,那麼它在JTextField中顯示符號「+」,否則顯示「0」。

這是我的程序代碼。有人可以將我需要的東西添加到我想要的想法中嗎?

public class DialPanel extends JPanel { 
    private MainFrame frame; 

    public DialPanel(MainFrame frame) { 
     this.frame = frame; 

     this.setLocation(0, 90); 
     this.setSize(300, 290); 
     this.setLayout(null); 
     this.setBackground(color); 

     this.initContent(); 
    } 

    // ------------------------------------------------------------------------- 

    private JButton btnNumZero; 
    private JTextField txfNumber; 

    private void initContent() { 
     txfNumber = new JTextField(); 
     this.add(txfNumber); 
     txfNumber.setSize(190, 30); 
     txfNumber.setLocation(30, 0); 
     txfNumber.setFocusable(false); 
     txfNumber.addActionListener(controller); 

     btnNumZero = new JButton(); 
     this.add(btnNumZero); 
     btnNumZero.setText("0"); 
     btnNumZero.setFocusable(false); 
     btnNumZero.setSize(30, 30); 
     btnNumZero.setLocation(10, 10); 
     btnNumZero.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseClicked(MouseEvent e) { 
       //Start someTimer countdown from two seconds 
      } 
     }); 
     btnNumZero.addMouseListener(new MouseAdapter() { 
      @Override 
      public void mouseReleased(MouseEvent e) { 
       //Stop someTimer 
       //if someTimer == 0 seconds then do this line: 
       txfNumber.setText("+"); 
       //else do this line: 
       txfNumber.setText("0"); 
      } 
     }); 
    } 
} 

對不起,如果有一些不必要的錯誤代碼。我從真實的代碼中刪除並改變了很多東西,這樣可以更容易理解和清晰地閱讀。

+0

實際上,我們需要看到你所使用的定時器的方式,我的意思是它的一個聖人或惡魔之一。 (聖靈和魔鬼在Swing的角度定義)) – Sage

+0

我試圖在互聯網上看看如何添加計時器JButton,但我不明白。什麼都沒有這就是爲什麼我問在這裏是否有人可以添加任何類型的計時器,使得程序能夠像我需要的那樣工作。 –

+0

使用Swing。看看[Swing Timer教程](http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html)。 – Sage

回答

0

除了使用定時器,您可能只想使用System.currentTimeMillis()。作爲秒錶類型的對象,Timer可能不是您正在查找的計時器。

你可以做這樣的事情

long startTime; 
    long endTime; 

    btnNumZero.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 
      startTime = System.currentTimeMillis(); 
     } 
    }); 
    btnNumZero.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseReleased(MouseEvent e) { 
      endTime = System.currentTimeMillis(); 
      long difference = endTime - startTime; 

      if (difference > 2000) 
       txfNumber.setText("+"); 
      else 
       txfNumber.setText("0"); 
     } 
    }); 
+1

我感到很蠢,我沒有意識到自己解決問題的方式。頭腦混亂^ _ ^謝謝,它的工作! ;) –