スレッドを使用してデジタル時計を作成しようとしています。 私は正しい方法を検討しているかどうかは分かりませんが、私が心に留めていたことは、JFrameコンストラクタを使用して初期の現在のSystem時刻を作成し、ラベルを使用してテキストとして表示することです。コンストラクタで、私は時間を更新するスレッドオブジェクトを作成します。スレッドを使用してデジタル時計を作成する
少し苦労して、それを正しく行う方法についてのアドバイスが必要でした。
setDefaultCloseOperation((JFrame.EXIT_ON_CLOSE));
setBounds(50, 50, 200, 200);
JPanel pane = new JPanel();
label = new JLabel();
//Font localTime = new Font("Lumina", Font.BOLD , 24);
pane.add(label);
add(pane);
sdf = new SimpleDateFormat("HH:mm:ss");
date = new Date();
s = sdf.format(date);
label.setText(s);
setVisible(true);
runner = new Thread(this);
while(runner == null)
{
runner = new Thread(this);
runner.start();
}
これは、1秒ごとに時計を更新する私のrun()メソッドです。
public void run()
{
while(true)
{
try
{
Thread.sleep(1000);
sdf = new SimpleDateFormat("HH:mm:ss");
date = new Date();
s = sdf.format(date);
label.setText(s);
}
catch(Exception e){}
}
メインメソッド。
public static void main(String[] args)
{
new DigitalClock().setVisible(true);
}
特に苦労していることは何ですか? runnerがnullにならないようにも見えますが、while(runner == null)チェックの直前にThreadオブジェクトをインスタンス化して割り当てます。ああ、純粋にここで質問する前に実際に試行された宿題に関する質問を見ることはまれである。 –