十月十一

软工李文轩發表於2024-10-14

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(); // 啟動計時器
}

相關文章