编写一个按顺序点名,每点一次名就弹出一个签到的对话框,如果五秒内无响应,则跳过继续点名,并输出缺勤 Java
时间: 2024-10-22 16:07:30 浏览: 11
在Java中,你可以使用Swing库来创建GUI应用并结合计时器功能来实现这个需求。这里是一个简化的示例代码:
```java
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AttendanceSystem {
private JFrame frame;
private JLabel studentName;
private JButton checkInButton;
private int count = 0;
private Timer timer;
public void startPointing() {
// 创建窗口和界面元素
frame = new JFrame("点名系统");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
studentName = new JLabel();
checkInButton = new JButton("签到");
// 设置按钮动作监听
checkInButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (count < 5) { // 如果还未达到5秒
JOptionPane.showMessageDialog(frame, "学生:" + studentName.getText() + "已签到"); // 弹出签到对话框
count = 0; // 重置计数
} else {
System.out.println(studentName.getText() + " 缺勤"); // 超过5秒,视为缺勤
}
}
});
frame.add(studentName); // 添加学生名字显示区域
frame.add(checkInButton);
// 开始计时器,每隔一秒检查一次
timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
count++; // 每次触发时增加计数
if (count == 5) { // 达到5秒
timer.stop(); // 停止计时器
checkInButton.setEnabled(false); // 禁用签到按钮
}
}
});
timer.start();
frame.pack();
frame.setVisible(true);
}
// 示例如何设置学生姓名
public void setStudentName(String name) {
studentName.setText(name);
}
}
```
在这个例子中,`startPointing()`函数启动了应用程序,设置了基本的用户界面元素,并通过定时器每秒钟检查一次用户是否点击了签到按钮。如果五秒内没有响应,它会在控制台打印出缺勤信息。
使用时,你需要先初始化一个`AttendanceSystem`对象,然后调用`setStudentName()`来设置当前的学生姓名,最后调用`startPointing()`开始点名过程。
阅读全文