假如我要实现电子时钟,
clock extends JPanel
……
frame.add(clock);
frame.setVisible(true);
现在frame会调用paint方法,而paint方法是单线程的,所以必须要让clock的时分秒各起一个线程。 但如何让clock在调用paint方法时,触发时分秒线程的start方法?
不用线程怎么做?
追答你为什么要使用线程呢? try{ Thread.sleep(1000);}catch(Exception ex){System.exit(0);} 然后你再在这里的后面更新你的显示不就可以了吗?
追问那分钟,小时怎么搞?换算成60*1000 3600*1000? 我做的时候很麻烦,因为两个数字显示的时间总是不同步,我想是因为两个在执行过程中产生了时间差,所以我准备用线程同步机制做。。
追答亲,如果你是用JLable来显示的话,你不会:
hour.setText("**");
min.setText("**");
sec.setText("**");
把这些同时放在一个大括号里面不行吗??
难道你是这个意思?while(true) {
Thread.sleep(1000);
t++;
if(t % 3600 == 0) {
hour.setText( (h+1)%24);
}
if(t % 60 == 0) {
min.setText((m+1)%60);
}
sec.setText((s+1)%60);
}好想法! 我一直想着每个时间都要一个时钟信号,谢谢了。 看来我的逻辑思维,数学思维能力有待提高。 但是话说回来,线程同步可以让另外两个线程阻塞,减少判断次数,也不错。