0

I am part of team that is creating a test for students to get used to a certain format before they have to take a certification test. The test is four hours long and as I am trying to implement the timer I am seeing unusual patterns.

I expect the timer to start at 4 hours (in HH:MM:SS format) and count down to all zeros, unfortunately it is starting at 11:00:00 and counting down to 07:00:00.

The next problem is the timer has to be shown between two different pages. The actual taking of the exam and a review page. When I toggle back and fourth between the pages the counter starts decrementing by the multiple of times clicked between pages.

Below is my created timer class, take quiz and submit review. The code is not perfect and needs work but I needed a GUI mock up to present.

Any help would be appreciated. Thank you.

TAKE QUIZ

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);
            }
        }

    }
}

FINAL SUBMIT

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);             
            }

        }


    }

}

QUIZ TIMER

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();
    }
}
PM 77-1
  • 12,933
  • 21
  • 68
  • 111
ola
  • 882
  • 2
  • 12
  • 29

1 Answers1

0

The first problem (11:00:00 to 7:00:00) probably has to do with your timezone.

The second one may (from the top of my head) have to do with time field being static.

In any way, I'd be curious why it is static. Seems that this logic would break if you have two timers.

(P.S. Please vote.)

Irina Rapoport
  • 1,404
  • 1
  • 20
  • 37