2013-12-08 1 views
0

JButton에서 Java 타이머를 올바르게 사용하는 방법을 모르겠다는 문제점이 있습니다.JButton을 사용한 Java 타이머 사용

내가 필요의 개념 - 나는 텍스트의 JButton를 클릭
"0"다음 제로까지 이초부터 계산 타이머를 시작합니다.
버튼을 놓으면 프로그램이 상황을 확인합니다 :
타이머가 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 Timer tutorial] (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

나 자신에 의해 이런 문제 해결 방법을 깨닫지 못했다고 나는 어리 석다. 혼란스러워하는 마음^_^고마워, 효과가 있었다! ;) –