2017-10-07 17 views
-2

GUI에서 타이머를 설정하고 표시했습니다.정수를 문자열로 분할하고 초/분/시간으로 자동으로 변환하는 방법

시간을 절약하고 프로그램을로드하고 싶습니다. 나는 그것을 성공적으로했지만, 나는 프로그램이 시작될 때마다, 이전 시간을로드하고 싶다.

ms은 모두 1 초이므로 1000을 넘으면 1 초로 변환되고 다시 0 값이됩니다. 두 번째 (millisecondTimer)를 (점수) 표시로 만들고 0으로 변경하지 않았습니다. 점수는 타이머가 멈출 때까지 재설정되지 않습니다.

//밀리 초 :

나는 점수를 잡고의 값을 얻기 주문으로 추출 할.

나는 그것을 추출하거나 다른 번호로 그것을 분할 시도했지만 그것은 나에게 너무 어려운 :/

간단히, 내가 자동으로 점수의 길이를 감지하고에 분, 초 및 밀리 초 싶어 문자열을 입력 한 후 JLabel에 표시하십시오.

다른 정수를 milliBackup, secondsBackup, minuteBackup으로 만들 수 있습니다. 과 밀리 초/초/분으로 별도로 전달하십시오. 그러나 그것이 가능하다면 나는이 방법으로 그것을하고 싶다.

public void beginTimer() { 

      score++; 
      ms++; 

      if(ms==1000) { 

       ms = 0; 
       s++; 

       if(s>59) { 

        s = 0; 
        m++; 

        if(m>59) { 

         timer.cancel(); 

        } 
       } 

      } 

      lblTimer.setText(displayTimer()); 

     } 

및 DisplayTimer가 있습니다

public String displayTimer() { 
      return String.format("%02d:%02d:%03d", m, s, ms); 
     } 
+0

자바'날짜 시간 API'를 사용하는 것이 좋습니다. http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html – Nolequen

답변

0

score에서 분 (m), 초 (들) 및 (밀리 초)을 계산하는 방법 :

ms = score; 
s = ms/1000; // integer div 
ms = ms % 1000; // remainder 
m = s/60; // integer div 
s = s % 60; // remainder 
1

당신이 방법을 업데이트하고 어떻게 말을하지 않습니다. Thread.sleep으로 전화하는 경우 특별한주의가 필요합니다. 더 좋은 방법이 있습니다. 그러나 코드를 사용하여 :

// bad use of static but once you'll get it working, change it 
static long s = 1; 
static long m = 1; 
static long ms = 1; 

// the method is not beginTimer but updateTimer and goes inside a 
// loop or something which calls it agan and again 
public void updateTimer() { 

     if(ms==1000L) {     
      ms = 0; 
      s++; 

      if(s==60L) {      
       s = 0; 
       m++; 

       if(m==60L) {       
        timer.cancel();       
       } 
      }     
     }    
     lblTimer.setText(displayTimer());    
    } 
+0

util 패키지에서 timer를 사용합니다.여기 대구가 있습니다 : timer = new Timer(); \t \t \t \t \t \t \t \t \t \t의 TimerTask의 TimerTask = 새의 TimerTask() { \t \t \t \t \t \t @Override \t \t \t \t \t \t 공공 무효 실행() { \t \t \t \t가\t \t \t \t \t \t \t \t \t beginTimer(); \t \t \t \t \t \t \t \t} \t \t \t \t} \t \t \t \t \t \t \t \t \t \t \t \t; \t \t \t \t \t \t \t \t \t \t timer.scheduleAtFixedRate (TimerTask를, 1, 1); – Erick

+0

니스. 'TimerTask'는 실시간 실행을 보장하지 않는다는 것을 명심하십시오. 예 : 정확한 밀리 초 단위로 카운터를 업데이트하는 것은 아닙니다. 그러나 그것은 장기적으로 정확한 횟수 **를 확실히 업데이트 할 것입니다. –

+0

음 ... 가장 정확한 타이머를 실행하는 가장 좋은 방법은 무엇입니까? – Erick