0

我是团队的一员,该团队正在创建一个测试,让学生在必须参加认证测试之前习惯某种形式。测试长达四个小时,当我尝试实现计时器时,我看到了不寻常的模式。

我希望计时器从 4 小时开始(采用 HH:MM:SS 格式)并倒计时到全零,不幸的是它从 11:00:00 开始倒计时到 07:00:00。

下一个问题是必须在两个不同页面之间显示计时器。实际参加考试和复习页面。当我在页面之间切换回来和第四次时,计数器开始按页面之间单击的倍数递减。

下面是我创建的计时器类,参加测验并提交评论。代码并不完美,需要工作,但我需要一个 GUI 模型来呈现。

任何帮助,将不胜感激。谢谢你。

参加测验

package edu.kings.pexam.student;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

public class TakeQuiz extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;

    private JButton submit;
    private JButton show;

    static QuizTimer timer;

    /**
     * @param args
     */
    public static void main(String[] args){
        TakeQuiz window = new TakeQuiz();
        window.setVisible(true);

    }

    public TakeQuiz(){
        setExtendedState(JFrame.MAXIMIZED_BOTH);

        JPanel upperPanel = new JPanel(new GridLayout(2,8));
        upperPanel.setPreferredSize(new Dimension(WIDTH,100));
        upperPanel.setBackground(Color.lightGray);
        this.add(upperPanel,BorderLayout.NORTH);

        JPanel lowerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        lowerPanel.setBackground(Color.white);
        this.add(lowerPanel, BorderLayout.CENTER);

        Font font = new Font("Dialog",Font.PLAIN,17);
        Font buttonFont = new Font("Dialog",Font.PLAIN,13);
        Font textButtonFont = new Font("Dialog",Font.PLAIN+Font.BOLD,13);
        Font submitButtonFont = new Font("Dialog", Font.PLAIN + Font.BOLD,15);

        //adding the questions buttons to the upper panel
        JPanel questionPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        questionPanel.setBackground(Color.lightGray);

        JButton firstQuestion = new JButton("<<");
        firstQuestion.setFont(buttonFont);
        questionPanel.add(firstQuestion);

        //space to help button line up with text
        JPanel spacer1 = new JPanel();
        spacer1.setBackground(Color.lightGray);
        questionPanel.add(spacer1);

        JButton perviousQuestion = new JButton("<");
        perviousQuestion.setFont(buttonFont);
        questionPanel.add(perviousQuestion);

        //space to help button line up with text
        JPanel spacer2 = new JPanel();
        spacer2.setBackground(Color.lightGray);
        questionPanel.add(spacer2);

        JButton nextQuestion = new JButton(">");
        nextQuestion.setFont(buttonFont);
        questionPanel.add(nextQuestion);

        //space to help button line up with text
        JPanel spacer3 = new JPanel();
        spacer3.setBackground(Color.lightGray);
        questionPanel.add(spacer3);

        JButton lastQuestion = new JButton(">>");
        lastQuestion.setFont(buttonFont);
        questionPanel.add(lastQuestion);

        upperPanel.add(questionPanel);

        //adding the goto button to the upper panel
        JPanel goToPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
        goToPanel.setBackground(Color.lightGray);

        JButton goTo = new JButton("Go To");
        goTo.setFont(textButtonFont);
        goToPanel.add(goTo);

        upperPanel.add(goToPanel);

        //adding the flag buttons to the upper panel
        JPanel flagPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        flagPanel.setBackground(Color.lightGray);

        JButton flagP = new JButton("< Flag");
        flagP.setFont(textButtonFont);
        flagPanel.add(flagP);

        JButton flag = new JButton("Flag");
        flag.setFont(textButtonFont);
        flagPanel.add(flag);

        JButton flagN = new JButton("Flag >");
        flagN.setFont(textButtonFont);
        flagPanel.add(flagN);

        upperPanel.add(flagPanel);

        //adding help and hide/show timer buttons to the upper panel 
        JPanel timerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        timerPanel.setBackground(Color.lightGray);

        JButton help = new JButton("Help");
        help.setFont(textButtonFont);
        timerPanel.add(help);

        show = new JButton("Show/Hide Timer");
        show.setFont(textButtonFont);
        show.addActionListener(this);
        timerPanel.add(show);

        upperPanel.add(timerPanel);

        //adding space panels
        JPanel spacePanel1 = new JPanel();
        JPanel spacePanel2 = new JPanel();
        spacePanel1.setBackground(Color.lightGray);
        spacePanel2.setBackground(Color.lightGray);
        upperPanel.add(spacePanel1);
        upperPanel.add(spacePanel2);

        //adding the submit button to the upper panel
        JPanel submitPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        submitPanel.setBackground(Color.lightGray);

        submit = new JButton("Submit Quiz");
        submit.setFont(submitButtonFont);
        submit.addActionListener(this);
        submitPanel.add(submit);

        upperPanel.add(submitPanel);

        //adding the question button text to the upper panel
        JPanel questionText = new JPanel(new FlowLayout(FlowLayout.LEFT));
        questionText.setBackground(Color.lightGray);

        JLabel label2 = new JLabel("<html><center>First<br></br>Question</center></html>");
        label2.setFont(textButtonFont);
        questionText.add(label2);

        JLabel label4 = new JLabel("<html><center>Perivous<br></br>Question</center></html>");
        label4.setFont(textButtonFont);
        questionText.add(label4);

        JLabel label6 = new JLabel("<html><center>Next<br></br>Question</center></html>");
        label6.setFont(textButtonFont);
        questionText.add(label6);

        JLabel label8 = new JLabel("<html><center>Last<br></br>Question</center></html>");
        label8.setFont(textButtonFont);
        questionText.add(label8);

        upperPanel.add(questionText);

        //adding text box for go to button
        JPanel textGoTo = new JPanel(new FlowLayout(FlowLayout.CENTER));
        textGoTo.setBackground(Color.lightGray);

        JPanel upper10 = new JPanel();
        upper10.setBackground(Color.lightGray);
        JTextField goToText = new JTextField("1",2);
        JLabel label10 = new JLabel("/25");
        label10.setFont(font);
        upper10.add(goToText,BorderLayout.CENTER);
        upper10.add(label10,BorderLayout.CENTER);
        textGoTo.add(upper10);

        upperPanel.add(textGoTo);

        //adding spacer to the upper panel
        JPanel spacePanel3 = new JPanel();
        spacePanel3.setBackground(Color.lightGray);
        upperPanel.add(spacePanel3);

        //adding the timer to the upper panel
        JPanel timePanel = new JPanel();
        timePanel.setBackground(Color.lightGray);

        timer = new QuizTimer();
        timer.start();
        JPanel upper20 = new JPanel();
        upper20.setBackground(Color.lightGray);
        upper20.add(timer.getTimeLabel(),BorderLayout.CENTER);
        timePanel.add(upper20);

        upperPanel.add(timePanel);

        //adding two more space panels
        JPanel spacePanel4 = new JPanel();
        JPanel spacePanel5 = new JPanel();
        spacePanel4.setBackground(Color.lightGray);
        spacePanel5.setBackground(Color.lightGray);
        upperPanel.add(spacePanel4);
        upperPanel.add(spacePanel5);

        //adding the questions to the lower panel
        JPanel lower1 = new JPanel(new GridLayout(4,1));
        lower1.setBackground(Color.white);
        JLabel question = new JLabel("<html>The parents of a 16-year-old swimmer contact an athletic trainer seeking nutritional advice for the athlete's pre-event<br><\bmeal. What recommendation should the athletic trainer share share with the parents regrading ideal pre-event meals?</html>");
        question.setFont(new Font("Dialog", Font.PLAIN+Font.BOLD, 18));
        JPanel answer = new JPanel(new GridLayout(6,1));
        answer.setBackground(Color.white);
        JLabel type = new JLabel("Choose all that apply.");
        type.setFont(new Font("Dialog", Font.PLAIN+Font.BOLD+Font.ITALIC, 20));


        JPanel answerA = new JPanel(new FlowLayout(FlowLayout.LEFT));
        answerA.setBackground(Color.white);
        JRadioButton a = new JRadioButton();
        a.setBackground(Color.white);
        a.setSize(25,25);
        JLabel aFill = new JLabel("Include foods high in carbohydrates, high in proteins , and low in fats");
        aFill.setFont(font);
        answerA.add(a);
        answerA.add(aFill);
        JPanel answerB = new JPanel(new FlowLayout(FlowLayout.LEFT));
        answerB.setBackground(Color.white);
        JRadioButton b = new JRadioButton();
        b.setBackground(Color.white);
        b.setSize(25,25);
        JLabel bFill = new JLabel("Prepare meals without diuretics foods");
        bFill.setFont(font);
        answerB.add(b);
        answerB.add(bFill);
        JPanel answerC = new JPanel(new FlowLayout(FlowLayout.LEFT));
        answerC.setBackground(Color.white);
        JRadioButton c = new JRadioButton();
        c.setBackground(Color.white);
        c.setSize(25,25);
        JLabel cFill = new JLabel("Prepare meals for eating four hours prior to the competition");
        cFill.setFont(font);
        answerC.add(c);
        answerC.add(cFill);
        JPanel answerD = new JPanel(new FlowLayout(FlowLayout.LEFT));
        answerD.setBackground(Color.white);
        JRadioButton d = new JRadioButton();
        d.setBackground(Color.white);
        d.setSize(25,25);
        JLabel dFill = new JLabel("Prepare meals with food that delay gastric emptying");
        dFill.setFont(font);
        answerD.add(d);
        answerD.add(dFill);

        JPanel record = new JPanel(new FlowLayout(FlowLayout.LEFT));
        record.setBackground(Color.lightGray);
        JLabel unanswered = new JLabel("Unanswered: ");
        unanswered.setFont(font);
        record.add(unanswered);
        JLabel unansweredNumber = new JLabel("25");
        unansweredNumber.setFont(font);
        unansweredNumber.setForeground(Color.blue);
        record.add(unansweredNumber);
        JLabel space1 = new JLabel();
        record.add(space1);
        JLabel answered = new JLabel("Answered: ");
        answered.setFont(font);
        record.add(answered);
        JLabel answeredNumber = new JLabel("0");
        answeredNumber.setFont(font);
        answeredNumber.setForeground(Color.blue);
        record.add(answeredNumber);
        JLabel space2 = new JLabel();
        record.add(space2);
        JLabel flagged = new JLabel("Flagged: ");
        flagged.setFont(font);
        record.add(flagged);
        JLabel flaggedNumber = new JLabel("0");
        flaggedNumber.setFont(font);
        flaggedNumber.setForeground(Color.blue);
        record.add(flaggedNumber);

        answer.add(type);
        answer.add(answerA);
        answer.add(answerB);
        answer.add(answerC);
        answer.add(answerD);
        answer.add(record);

        lower1.add(question);
        lower1.add(answer);
        lowerPanel.add(lower1);



        getContentPane().setBackground(Color.white);
        upperPanel.setVisible(true);
        lowerPanel.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
         if(e.getSource() == submit){
            SubmitReview reviewScreen = new SubmitReview();
            this.setVisible(false);
            reviewScreen.setVisible(true);
        }else if(e.getSource() == show){
            if(timer.getTimeLabel().isVisible() == true){
                timer.getTimeLabel().setVisible(false);
            }else{
                timer.getTimeLabel().setVisible(true);
            }
        }

    }
}

最终提交

package edu.kings.pexam.student;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class SubmitReview extends JFrame implements ActionListener {

    private static final long serialVersionUID = 1L;

    private JButton hideTimerButton;
    private JButton showTimerButton;
    private JComboBox<String> languageBox;
    private JButton returnToQuizButton;
    private JButton endQuizButton;
    private JTextField textEnter;

    static QuizTimer timer = TakeQuiz.timer;


    /**
     * Runs the program to produce the screen for submission review.
     * @param args
     */
    public static void main(String[] args){
        SubmitReview window = new SubmitReview();
        //sets the window visible
        window.setVisible(true);

    }

    public SubmitReview(){


        //Extends the screen to maximum size 
        setExtendedState(JFrame.MAXIMIZED_BOTH);

        //Creates a panel that will keep items pushed to the right.
        JPanel leftPanel = new JPanel();
        leftPanel.setPreferredSize(new Dimension(200,HEIGHT));
        leftPanel.setBackground(Color.white);
        this.add(leftPanel,BorderLayout.WEST);

        //Panel where everything on page will go. 
        JPanel rightPanel = new JPanel(new GridLayout(10,1));
        rightPanel.setBackground(Color.white);
        this.add(rightPanel, BorderLayout.CENTER);

        //font for the text
        Font textFont = new Font("Dialog",Font.PLAIN,15);

        //First panel in the grid. Grid moves from top to bottom.
        JPanel panel0 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        panel0.setBackground(Color.white);
        //hide timer button, visible when timer is shown.
        hideTimerButton = new JButton("Hide Timer");
        hideTimerButton.setBackground(Color.lightGray);
        Dimension hideTimerDimension = new Dimension(100,25);
        hideTimerButton.setSize(hideTimerDimension);
        hideTimerButton.setMinimumSize(hideTimerDimension);
        hideTimerButton.setMaximumSize(hideTimerDimension);
        hideTimerButton.setPreferredSize(hideTimerDimension);
        hideTimerButton.setVisible(true);
        //show timer button, visible when timer is not shown.
        showTimerButton = new JButton("Show Timer");
        showTimerButton.setBackground(Color.lightGray);
        Dimension showTimerDimension = new Dimension(125, 25);
        showTimerButton.setSize(showTimerDimension);
        showTimerButton.setMinimumSize(showTimerDimension);
        showTimerButton.setMaximumSize(showTimerDimension);
        showTimerButton.setPreferredSize(showTimerDimension);
        showTimerButton.setVisible(false);
        //creates functionality for the show and hide timer buttons
        hideTimerButton.addActionListener(this);
        showTimerButton.addActionListener(this);
        panel0.add(timer.getTimeLabel());
        panel0.add(hideTimerButton);
        panel0.add(showTimerButton);
        rightPanel.add(panel0);

        //Second panel in the grid.
        JPanel panel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel1.setBackground(Color.white);
        //Splits this panel into a grid
        JPanel grid = new JPanel(new GridLayout(2,1));
        //A Panel to hold the language drop down menu
        JPanel languagePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        languagePanel.setBackground(Color.white);
        //Creates a combo box of languages (drop down menu)
        String[] languages = {"English", "Spanish", "French", "Portuguese" };
        languageBox = new JComboBox<String>(languages);
        languageBox.setBackground(Color.white);
        languageBox.addActionListener(this);
        languagePanel.add(languageBox);
        //Text under the combo box
        JPanel textPanel = new JPanel();
        JLabel text = new JLabel("Do you want to end your exam now?");
        Font font = new Font("Dialog",Font.PLAIN,17);
        text.setFont(font);
        textPanel.setBackground(Color.white);
        textPanel.add(text);
        grid.add(languagePanel);
        grid.add(textPanel);
        //Stop sign picture
        File stopSign = new File("resources/stop_sign.png");
        ImageIcon stopSignIcon = null;
        try {
            stopSignIcon = new ImageIcon(ImageIO.read(stopSign));
        }
        catch (IOException e) {
            System.out.println("Caught exception:" + e);
        }
        JLabel stopLabel = new JLabel();
        stopLabel.setIcon(stopSignIcon);
        stopLabel.setBackground(Color.white);
        stopLabel.setBorder(null);
        panel1.add(grid);
        panel1.add(stopLabel);
        rightPanel.add(panel1);

        //third panel in the grid
        JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel2.setBackground(Color.white);
        //splits the panel into a grid
        JPanel textArea2 = new JPanel(new GridLayout(2,1));
        textArea2.setBackground(Color.white);
        JPanel warningText1 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        warningText1.setBackground(Color.white);
        JLabel warningText1Point = new JLabel("<html><li>You left the following questions unanswered. If you end your exam now,<b> you lose the chance to answer these questions.</b></html>");
        warningText1Point.setFont(textFont);
        warningText1.add(warningText1Point);
        JPanel breakPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
        breakPanel.setBackground(Color.white);
        JLabel space = new JLabel("<html><t>  </t></html>");
        breakPanel.add(space);
        //adds FAKE question buttons to the panel
        JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        buttonPanel.setBackground(Color.white);
        JButton one = new JButton("1");
        JButton two = new JButton("5");
        JButton three = new JButton("12");
        one.setBackground(Color.lightGray);
        two.setBackground(Color.lightGray);
        three.setBackground(Color.lightGray);
        buttonPanel.add(one);
        buttonPanel.add(two);
        buttonPanel.add(three);
        breakPanel.add(buttonPanel);
        textArea2.add(warningText1);
        textArea2.add(breakPanel);
        panel2.add(textArea2);
        rightPanel.add(panel2);

        //fourth panel in the grid
        JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel3.setBackground(Color.white);
        JPanel textArea3 = new JPanel(new GridLayout(2,1));
        textArea3.setBackground(Color.white);
        JPanel warningText3 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        warningText3.setBackground(Color.white);
        JLabel warningText3Point = new JLabel("<html><li>You marked the following questions for later review. If you end your exam now, <b>you lose the chance to review these marked questions.</b></html>");
        textArea3.setBackground(Color.white);
        warningText3Point.setFont(textFont);
        JPanel breakPanel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        breakPanel3.setBackground(Color.white);
        JLabel space3 = new JLabel("<html><t>  </t></html>");
        breakPanel3.add(space3);
        JPanel buttonPanel3 = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        buttonPanel3.setBackground(Color.white);
        JButton four = new JButton("4");
        JButton five = new JButton("9");
        JButton six = new JButton("20");
        four.setBackground(Color.lightGray);
        five.setBackground(Color.lightGray);
        six.setBackground(Color.lightGray);
        buttonPanel3.add(four);
        buttonPanel3.add(five);
        buttonPanel3.add(six);
        breakPanel3.add(buttonPanel3);
        textArea3.add(warningText3Point);
        textArea3.add(warningText3);
        textArea3.add(breakPanel3);
        panel3.add(textArea3);
        rightPanel.add(panel3);

        //fifth panel in the grid
        JPanel panel4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel4.setBackground(Color.white);
        JPanel grid4 = new JPanel(new GridLayout(2,1));
        grid4.setBackground(Color.white);
        JPanel border4 = new JPanel(new GridLayout(1,2));
        border4.setBackground(Color.white);
        JPanel spacer4 = new JPanel();
        spacer4.setBackground(Color.white);
        JPanel button4 = new JPanel();
        button4.setBackground(Color.white);
        returnToQuizButton = new JButton("No. Return to the Quiz" );
        returnToQuizButton.setBackground(Color.lightGray);
        returnToQuizButton.addActionListener(this);
        button4.add(returnToQuizButton,BorderLayout.SOUTH);
        JPanel textPanel4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        textPanel4.setBackground(Color.white);
        JLabel label4 = new JLabel("<html><li>You still have time remaining.</b></html>");
        label4.setFont(textFont);
        textPanel4.add(label4);
        border4.add(spacer4);
        border4.add(button4);
        grid4.add(textPanel4);
        grid4.add(border4);
        panel4.add(grid4);
        rightPanel.add(panel4);

        //sixth panel in the grid
        JPanel panel5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel5.setBackground(Color.white);
        JPanel textPanel5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        textPanel5.setBackground(Color.white);
        JLabel text5 = new JLabel("<html><li>If you end your exam now,<b> you cannot return to the exam.</b></html>");
        text5.setFont(textFont);
        textPanel5.add(text5);
        panel5.add(textPanel5);
        rightPanel.add(panel5);

        //seventh panel in the grid
        JPanel panel6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        panel6.setBackground(Color.white);
        JPanel textPanel6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
        textPanel6.setBackground(Color.white);
        JLabel text6 = new JLabel("If you are ready to end the multiple-choice exam now, type the words 'I understand' in the box below.");
        text6.setFont(textFont);
        textPanel6.add(text6);
        panel6.add(textPanel6);
        rightPanel.add(panel6);

        //eight panel in the grid
        JPanel panel7 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        panel7.setBackground(Color.white);
        textEnter = new JTextField("Type 'I understand' here.");
        textEnter.setFont(textFont);
        textEnter.setColumns(13);
        //clears box on click of mouse
        textEnter.addMouseListener(new MouseAdapter(){ 
            public void mouseClicked(MouseEvent e){
                textEnter.setText("");  
            }
        });
        textEnter.addActionListener(this);
        JPanel textHolder = new JPanel();
        textHolder.setBackground(Color.white);
        textHolder.add(textEnter,BorderLayout.CENTER);
        panel7.add(textHolder);
        rightPanel.add(panel7);

        //ninth panel in the grid
        JPanel panel8 = new JPanel(new FlowLayout(FlowLayout.CENTER));
        panel8.setBackground(Color.white);
        endQuizButton = new JButton("Yes. End the Quiz Now");
        endQuizButton.setBackground(Color.lightGray);
        endQuizButton.addActionListener(this);
        endQuizButton.setEnabled(false);
        JPanel button8 = new JPanel();
        button8.setBackground(Color.white);
        button8.add(endQuizButton, BorderLayout.CENTER);
        panel8.add(button8);
        rightPanel.add(panel8);

        getContentPane().setBackground(Color.white);
        leftPanel.setVisible(true);
        rightPanel.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String text = textEnter.getText();
        if(text.equals("I understand")){
            endQuizButton.setEnabled(true);
        }
        if(e.getSource() == hideTimerButton){
            hideTimerButton.setVisible(false);
            timer.getTimeLabel().setVisible(false);
            showTimerButton.setVisible(true);
        }else if(e.getSource() == showTimerButton){
            showTimerButton.setVisible(false);
            hideTimerButton.setVisible(true);
            timer.getTimeLabel().setVisible(true);
        }else if(e.getSource() == returnToQuizButton){
            TakeQuiz quizScreen = new TakeQuiz();
            this.setVisible(false);
            quizScreen.setVisible(true);            
        }else if(e.getSource() == endQuizButton){
            int response = JOptionPane.showConfirmDialog(null, "Are you sure you want to submit your quiz for grading?","Select an Option", JOptionPane.YES_NO_OPTION);
            if(response == JOptionPane.YES_OPTION){
                JOptionPane.showMessageDialog(null, "Your grade on this quiz is: 85");
                System.exit(0);             
            }

        }


    }

}

测验计时器

package edu.kings.pexam.student;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.Timer;

public class QuizTimer {

    private static double time = 1.44*Math.pow(10,7);
    private SimpleDateFormat setTime = new SimpleDateFormat("hh:mm:ss");
    private JLabel timeLabel;
    private Timer countDown;

    public QuizTimer(){

        countDown = new Timer(1000, new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                if (time >= 0) {
                    timeLabel.setText(setTime.format(time));
                    time = time-1000;
                }else{
                    JOptionPane.showMessageDialog(null, "Your quiz has been automatically submitted for grading.", "Out of Time", JOptionPane.OK_OPTION);
                    System.exit(0);
                }
            }   
        });

        timeLabel = new JLabel();
        timeLabel.setFont( new Font("Dialog", Font.PLAIN + Font.BOLD,24));
        timeLabel.setVisible(true);
    }

    public JLabel getTimeLabel(){
        return timeLabel;
    }

    public void start(){
        countDown.start();
    }
}
4

1 回答 1

0

第一个问题(11:00:00 到 7:00:00)可能与您的时区有关。

第二个可能(从我的脑海中)与时间场是静态的有关。

无论如何,我很好奇为什么它是静态的。如果您有两个计时器,似乎这种逻辑会中断。

(PS 请投票。)

于 2013-10-06T03:05:00.303 回答