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