【发布时间】:2025-12-06 15:30:01
【问题描述】:
所以我开始对 Threads 及其工作原理产生了浓厚的兴趣,它的工作原理有点令人惊奇,但我今天才了解它并试图让一个程序工作。所以我试图制作一个时钟,在 Jlabel 中为我提供一个当前时钟,以及一个我自己输入时间的文本字段。所以我想做的是它应该首先向我显示时间,当按下“设置时间”按钮时,它应该改变我输入的时间并从那里作为时钟。
所以我现在的问题是,每当我按下设置时间时,它会改变一秒钟,然后再次返回当前时钟。而且我真的不知道如何在按下设置时间时停止第一个线程(启动第二个线程)
不过,我认为这有点简单但使用起来很有趣,
编辑:我还发现输入自己的“时钟”时计数会出现问题。我的代码:
public Clock() {
initialize();
Thread1();
}
.......
JButton btnSetTime = new JButton("Set time");
btnSetTime.setBounds(474, 262, 89, 23);
frame.getContentPane().add(btnSetTime);
btnSetTime.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnSetTime) {
Thread2();
}
}
});
}
public void Thread2() {
Thread t2 = new Thread() {
public void run() {
try {
for(;;) {
int hour = Integer.parseInt(tfhour.getText());
int minute = Integer.parseInt(tfminute.getText());
int second = Integer.parseInt(tfsecond.getText());
lblKlockan.setText(hour + ":" + minute + ":" + second);
sleep(1000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};t2.start();
}
public void Thread1() {
Thread t1 = new Thread() {
public void run() {
try {
for(;;) {
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
lblKlockan.setText(hour + ":" + minute + ":" + second);
sleep(1000);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};t1.start();
}
}
如我所见,int hour = Integer.parseInt(tfhour.getText());如果我是对的,如果我稍后改成自己的时钟,可能不会算作时钟?在这种情况下,我该如何解决?
我希望我的所有问题都在这里,我希望这里的任何人也愿意帮助我:)
编辑:
为了方便查看:
【问题讨论】:
标签: java multithreading user-interface