十月十一
Java在弹窗中显示倒计时
timerLabel = new JLabel("剩余时间: 300秒");
panel.add(timerLabel);
// 添加得分显示标签
scoreLabel = new JLabel("得分: 0");
panel.add(scoreLabel);
// 按钮点击事件处理
checkButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timer.stop(); // 提交时停止计时
score = 0; // 重置分数
for (int i = 0; i < questions.length; i++) {
try {
int userAnswer = Integer.parseInt(answerFields[i].getText());
if (userAnswer == questions[i][3]) {
score++; // 正确答案加分
}
} catch (NumberFormatException ex) {
// 用户输入无效
JOptionPane.showMessageDialog(panel, "第 " + (i + 1) + " 题答案无效!");
}
}
// 计算正确率
double accuracy = (double) score / questions.length * 100;
// 更新分数和准确率标签
scoreLabel.setText("得分: " + score + " (正确率: " + String.format("%.2f", accuracy) + "%)");
}
});
// 更新倒计时标签
timerLabel.setText("剩余时间: " + timeLeft + "秒");
}
private static void startTimer() {
timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (timeLeft > 0) {
timeLeft--; // 每秒减1
// 更新倒计时标签
timerLabel.setText("剩余时间: " + timeLeft + "秒");
} else {
timer.stop(); // 时间到停止计时
JOptionPane.showMessageDialog(null, "时间到,自动提交!");
submitAnswers(); // 自动提交答案
}
}
});
timer.start(); // 启动计时器
}