運用Java編寫 秒錶程序

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;


public class SecondJFrame extends JFrame implements ActionListener,FocusListener

{                                                          //響應單擊、焦點事件

   private JTextField text;

   private JButton buttons[];

   private Timer timer;                                   //定時器對象


   public SecondJFrame()

   {

       super("秒錶");

       this.setSize(240,110);

       this.setLocation(500,400);

       this.setDefaultCloseOperation(EXIT_ON_CLOSE);

       this.addFocusListener(this);                       //註冊焦點事件監聽器


       this.getContentPane().setLayout(new GridLayout(2,1));

       JPanel panels[] = new JPanel[2];

       for (int i=0; i<panels.length; i++)

       {

           panels[i] = new JPanel();

           this.getContentPane().add(panels[i]);

       }


       text = new JTextField("0.00",16);

       text.setHorizontalAlignment(JTextField.RIGHT);

       panels[0].add(text);

       panels[0].add(new JLabel("秒"));


       String bstr[]={"Start","Continue","Stop"};

       buttons=new JButton[bstr.length];

       for (int i=0; i<buttons.length; i++)

       {

           buttons[i]=new JButton(bstr[i]);

           buttons[i].addActionListener(this);

           panels[1].add(buttons[i]);

       }

       buttons[1].setEnabled(false);

       buttons[2].setEnabled(false);

       timer = new Timer(10,this);                        //創建定時器對象

       this.setVisible(true);

   }


   public void actionPerformed(ActionEvent e)             //定時器定時執行事件

   {

       if (e.getSource()==timer)

       {

           double t=Double.parseDouble(text.getText());

           t+=0.01;

           text.setText(String.format("%1.2f", t));

           return;

       }

       if (e.getSource()==buttons[0])

       {

           text.setText("0.00");

             timer.start();                             //定時器啓動

           buttons[0].setEnabled(false);

           buttons[1].setEnabled(false);

           buttons[2].setEnabled(true);

           return;

       }

       if (e.getSource()==buttons[1])

       {

                  timer.restart();                //定時器重啓動

           buttons[0].setEnabled(false);

           buttons[1].setEnabled(false);

           buttons[2].setEnabled(true);

           return;

       }

       if (e.getSource()==buttons[2])

       {

           timer.stop();                                  //定時器停止

           buttons[0].setEnabled(true);

           buttons[1].setEnabled(true);

           buttons[2].setEnabled(false);

       }      

   }


   public void focusGained(FocusEvent e){}                //框架窗口獲得焦點時

   public void focusLost(FocusEvent e)                    //框架窗口失去焦點時

   {

             timer.stop();                                //定時器停止

   }


   public static void main(String arg[])

   {

       new SecondJFrame();

   }

}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章