java创建一个点名页面,实现用户点击点名和点名停止
时间: 2024-04-09 15:33:34 浏览: 66
以下是一个简单的Java代码示例,用于创建一个点名页面,并实现用户点击点名和点名停止的功能:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class RollCallPage extends JFrame {
private volatile boolean isRollCalling = false; // 点名标志
private JButton startButton;
private JButton stopButton;
private JLabel resultLabel;
private List<String> students; // 学生列表
public RollCallPage() {
students = new ArrayList<>();
students.add("张三");
students.add("李四");
students.add("王五");
students.add("赵六");
startButton = new JButton("开始点名");
stopButton = new JButton("停止点名");
resultLabel = new JLabel("点名结果");
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
startRollCall();
}
});
stopButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stopRollCall();
}
});
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(startButton);
panel.add(stopButton);
panel.add(resultLabel);
add(panel);
setTitle("点名页面");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void startRollCall() {
isRollCalling = true;
Thread rollCallThread = new Thread(() -> {
Random random = new Random();
while (isRollCalling) {
int index = random.nextInt(students.size());
String student = students.get(index);
resultLabel.setText("点名:" + student);
try {
Thread.sleep(1000); // 每隔1秒点名一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
rollCallThread.start();
}
public void stopRollCall() {
isRollCalling = false;
resultLabel.setText("点名停止");
}
public static void main(String[] args) {
new RollCallPage();
}
}
```
上述代码使用了Swing库创建了一个简单的GUI界面。在`RollCallPage`类中,通过创建`JButton`和`JLabel`来实现开始点名按钮、停止点名按钮和显示点名结果的标签。通过添加监听器给按钮,实现点击按钮时调用对应的方法。
在`startRollCall()`方法中,创建了一个新的线程`rollCallThread`来执行点名的逻辑。在循环中,通过随机数从学生列表中选择一个学生进行点名,并更新结果标签的文本。当点击停止按钮时,调用`stopRollCall()`方法将`isRollCalling`标志设置为`false`,使得循环退出,停止点名,并更新结果标签的文本。
在`main()`方法中,创建了一个`RollCallPage`对象,启动点名页面。
注意:上述代码只是一个简单的示例,可能需要根据实际需求进行更多的界面设计和功能扩展。
阅读全文