JavaSwing使用简单多线程实现随机点名可视化应用程序
1.首先来看一下小程序最终实现的效果
- 初始界面
- 运行及终止界面
ps:运行状态中显示的名称是随机变换的,但是截图并不能看出效果哦^_^。
2.具体的实现过程及方法
首先我们用JavaSwing先把这个界面写出来,然后再在相应的控件按钮上添加点击事件,实现不同的控制逻辑即可,下面一起看看具体的实现过程吧^_^。
- 开始按钮的事件及实现
//定义开始按钮
JButton btnStart = new JButton("开始");
btnStart.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//防止重复点击开始按钮以致多次创建线程
if(startThread==null||!startThread.isAlive())
{
startThread=new Thread(new Runnable(){
public void run(){
while(true)
{
try {
start();
//设置随机的间隔时间ms
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
startThread.start();
}
}
});
- 停止按钮的事件及实现
//定义停止按钮
JButton btnEnd = new JButton("停止");
btnEnd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//判断当前线程是否存在
if(startThread!=null)
{
startThread.stop();
}
}
});
- start()方法的定义
public void start() throws InterruptedException{
//定义班级同学姓名
String[] classnames={"小王","小李","小赵","小张","小黄","小程","小肖"};
//定义一个整型随机数
Random ran=new Random();
int selectedNum=ran.nextInt(classnames.length);
//随机选中一个名称,并在UI上显示
String name=classnames[selectedNum];
lblName.setText(name);
}
其实这里的数据源我们可以改成从数据库中获取学生姓名,这样就更加贴近实际的应用,我们在这里只是为了方便而已。。。
好了,当我们做完这一切的设计后,我们也就可以感受一下老师在点名的感觉了^^。