由于教学的原因,编写的一个随机点名程序,废话不多说,直接上代码:
package org.example;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MyFrame extends JFrame implements Runnable{
/**
*
*/
private static final long serialVersionUID = -2874598588895179507L;
private static List<String> LIST = new ArrayList<String>(50);
static {
LIST.add("宋欣航");
LIST.add("王彤");
LIST.add("王帅哲");
LIST.add("赵子严");
LIST.add("李雨涛");
LIST.add("张佳浩");
LIST.add("许文倩");
LIST.add("刘宵伊");
LIST.add("刘暄");
LIST.add("王薪贺");
LIST.add("陈梦鑫");
LIST.add("曹佳豪");
}
private JLabel lblInfo, lblName;
private JButton btnOK;
private final Random ran = new Random();
private Thread thread;
private Font font;
{
this.lblInfo = new JLabel("当前共有" + LIST.size() + "个学生");
this.lblName = new JLabel("姓名:");
this.btnOK = new JButton("点名");
font=new Font("仿宋", Font.BOLD, 40);//设置字体样式
this.lblName.setForeground(Color.BLUE);//设置字体颜色(前景色)
}
public MyFrame() {
this.setTitle("随机点名");//设置窗体标题
this.setSize(255, 200);//设置窗体大小(宽和高)
this.setLocationRelativeTo(null);//居中显示
this.setVisible(true);//可视
this.setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗体的退出事件绑定
this.setLayout(new GridLayout(3, 1));//设置窗体布局为表格布局(3行1列)
//添加控件元素到窗体中
this.add(this.lblInfo);
this.add(this.lblName);
this.add(this.btnOK);
//为按钮注册单击事件
this.btnOK.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//一个按钮响应多个事件(启动线程、恢复线程、挂起线程)
String mess=e.getActionCommand();
if(mess.equals("点名")){
if(thread==null){
thread=new Thread(MyFrame.this);
thread.start();//启动线程
}else if(thread.isAlive()){//如果线程是活动的
thread.resume();//恢复
}
//修改按钮的文本为暂停
btnOK.setText("暂停");
}else if(thread.isAlive()){
thread.suspend();//挂起
btnOK.setText("点名");
}
}
});
}
@Override
public void run() {
while (true) {
int m = ran.nextInt(LIST.size());//获取一个随机数
String name=LIST.get(m);//从集合中获取姓名
this.lblName.setFont(font);
lblName.setText(name);//显示到label中
// lists.remove(m);//删除已经点过的学生姓名
// lblInfo.setText("当前共有" + lists.size() + "个学生");
try {
Thread.sleep(60);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new MyFrame();
}
}
打包为可执行的jar,步骤如下:
第一步:
第二步:
第三步:
第四步: