java随机点名程序。点击按钮,静态文本区域“学号+姓名”开始滚动,按钮上的文字变为“停止”,点击停止,停止滚动,同时按钮上的文字变为“点击开始随机滚动”。
时间: 2023-06-26 15:05:50 浏览: 87
以下是一个简单的 Java 随机点名程序的实现,使用了Swing界面库:
```java
import java.awt.BorderLayout;
import java.awt.EventQueue;
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;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
public class RandomNamePicker {
private JFrame frame;
private JLabel label;
private JButton button;
private Thread thread;
private volatile boolean running;
public RandomNamePicker() {
initialize();
}
private void initialize() {
frame = new JFrame("随机点名程序");
frame.setBounds(100, 100, 400, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
label = new JLabel("", SwingConstants.CENTER);
panel.add(label);
button = new JButton("开始随机点名");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (running) {
stopRolling();
} else {
startRolling();
}
}
});
panel.add(button);
}
private void startRolling() {
running = true;
button.setText("停止");
List<String> names = new ArrayList<String>();
names.add("001 张三");
names.add("002 李四");
names.add("003 王五");
names.add("004 赵六");
Random random = new Random();
thread = new Thread(new Runnable() {
public void run() {
while (running) {
label.setText(names.get(random.nextInt(names.size())));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// ignore
}
}
}
});
thread.start();
}
private void stopRolling() {
running = false;
button.setText("点击开始随机点名");
}
public void show() {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public static void main(String[] args) {
RandomNamePicker picker = new RandomNamePicker();
picker.show();
}
}
```
程序创建了一个 JFrame 窗口,包含一个静态文本区域和一个按钮。当用户点击按钮时,程序会开始滚动学生名单,直到用户再次点击按钮停止滚动。
注意,程序中使用了一个 volatile 的 boolean 变量 running,用于控制滚动线程的状态。在 startRolling 方法中,程序会创建一个新的线程,不断更新 label 的文本内容,直到 running 变量被设置为 false。在 stopRolling 方法中,程序会将 running 变量设置为 false,从而停止滚动线程。
阅读全文