2017-10-07 3 views
-2

GUIでタイマーを設定して表示しました。整数を文字列に分割し、秒/分/時間で自動的に変換する方法

私はプログラムが時間を保存して読み込みたいと思っています。私はそれをうまくやったが、 私はいつもプログラムが始まる前の時間をロードしたい。

msはミリ秒であるため、1000を超えると1秒に変換され、再び0の値が得られます。私は2番目の(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

。 http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html – Nolequen

答えて

0

どの分(m)を計算するには、秒(s)、およびscoreからのミリ秒(ms):Java `日時API`を使用することをお勧めし

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を使用しています。ここにcodがあります: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 \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

hmm ..最も正確なタイマーを実行する最良の方法は何ですか? – Erick

関連する問題