5

私は Java の初心者で、swing GUI に時間を表示する単純なストップウォッチ プログラムを作成しようとしています。ストップウォッチを作成するのは簡単ですが、GUI を毎秒更新して現在の時刻をストップウォッチに表示する方法が見つかりません。これどうやってするの?

4

1 に答える 1

6

これらの行に沿った何かがそれを行う必要があります:

import java.awt.EventQueue;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
import javax.swing.JLabel;

/** @see https://stackoverflow.com/a/11058263/230513 */
public class Clock {

    private Timer timer = new Timer();
    private JLabel timeLabel = new JLabel(" ", JLabel.CENTER);

    public Clock() {
        JFrame f = new JFrame("Seconds");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(timeLabel);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
        timer.schedule(new UpdateUITask(), 0, 1000);
    }

    private class UpdateUITask extends TimerTask {

        int nSeconds = 0;

        @Override
        public void run() {
            EventQueue.invokeLater(new Runnable() {

                @Override
                public void run() {
                    timeLabel.setText(String.valueOf(nSeconds++));
                }
            });
        }
    }

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                final Clock clock = new Clock();
            }
        });
    }
}

にはtimeLabel、タイマーが実行されている秒数が常に表示されます。

  1. 「hh:mm:ss」を表示するには、正しくフォーマットする必要があります。1 つのアプローチをここに示します

  2. コンテナーを作成し、コンテナーにラベルを追加して、GUI の一部として表示できるようにします。

  3. を使用して、結果をこの代替javax.swing.Timerと比較します。

于 2012-06-15T21:13:16.580 に答える