仪器社区

谁能帮我用java多线程设计一个可多个同时使用的计时器吗?

李红斌1314 2010-12-27
运用JAVA 中的线程技术,在设计一个用户界面的基础上,设计计数器(可多个同时使用)
评论
全部评论
随便猪册一个
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class FrameTest extends JFrame {
public FrameTest() {
super("Swing 例子");
this.setSize(300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLayout(new FlowLayout());
this.add(new CounterJButton());
this.add(new CounterJButton());
this.add(new CounterJButton());
this.setVisible(true);
}

static class CounterJButton extends JButton implements Runnable,
ActionListener {
private boolean started = false;
private int count = 0;

public CounterJButton() {
super("按我开始计数");
this.addActionListener(this);
}

public void run() {
while (started) {
this.setText("按我暂停 " + String.valueOf(count++));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}

public void actionPerformed(ActionEvent e) {
if (started) {
this.started = false;
this.setText("按我恢复计数 " + count);
} else {
this.started = true;
new Thread(this).start();
}
}
}

public static void main(String[] args) {
new FrameTest();
}
}
16 0 2010-12-28 0条评论 回复
豆豆酱999959
可以用多线程设计,搞三个按钮,每点击一次增加一个线程。把增加计时器线程部分写入actionPerformed中,不过多线程本身就是用sleep()来实现的,在sleep参数中你可以设定少一点的毫秒数,好像不是很理想,时间不会很精确。多线程跟适合于多个同时进行的动作,或动画和电源。当然也可用于类似会计收银买票这些同步。
15 0 2010-12-28 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论