十月十一

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(); // 启动计时器
}

posted @ 2024-10-14 13:59  软工李文轩  阅读(3)  评论(0编辑  收藏  举报