2013-10-06 23 views
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);    
      } 

     } 


    } 

} 

测验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(); 
    } 
} 
+1

如果您希望获得帮助,请提供[** SSCCE **](http://sscce.org/)。 –

+0

考虑显示[这里](http://stackoverflow.com/q/2704473/230513)所示的方法之一。 – trashgod

回答

0

的第一个问题(11:00:00至7:00:00)可能有跟你的时区做。

第二个可能(从我的头顶)与时间场是静态的。

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

(P.S.请投票。)

+0

有没有一种方法可以将其设置为不考虑时区的地方? – ola

+0

设置时区为GMT?http://stackoverflow.com/questions/6567923/timezone-conversion – Ruby