JAVA實現的可定時到秒的秒表

jopen 9年前發布 | 1K 次閱讀 Java

    package timerDemo;

import java.awt.BorderLayout;  

public class TimerCountDemo extends JPanel implements Runnable,ActionListener{  
    private ScrollPane scrollPane;  
    private TextArea resultTimeText;  
    private JLabel currentTimeLabel;  
    private Calendar currentCalendar;  
    private Date currentDate;  
    private JButton startJButton;  
    private JButton quanJButton;  
    private JButton secondButton;  
    private JButton stopJButton;  
    private JButton showTimeJButton;  
    private Thread t;  
    private static int i=1;                          //圈數  
    private static int hour,min,sec,msec,totalTime;  
    private static boolean flag=true;  


    public TimerCountDemo() {  
        // TODO Auto-generated constructor stub  
        startJButton=new JButton("開始");  
        showTimeJButton=new JButton("00-00-00");  
        showTimeJButton.setBackground(SystemColor.activeCaption);  
        showTimeJButton.setFont(new Font("葉根友鋼筆行書升級版", Font.PLAIN, 14));  
        quanJButton=new JButton("以圈計時");  
        quanJButton.setEnabled(false);        //初始化時設為false  
        secondButton=new JButton("以秒計時");  
        secondButton.setEnabled(false);       //初始化時設為false  
        stopJButton=new JButton("停止");  
        stopJButton.setBackground(Color.red);  //設置背景色為紅色  
        scrollPane=new ScrollPane();  
        resultTimeText=new TextArea(20,20);  
        resultTimeText.setEditable(false);  
        scrollPane.setEnabled(true);  
        currentCalendar=Calendar.getInstance();  
        scrollPane.setBackground(Color.WHITE);  
        currentTimeLabel=new JLabel();  
        currentDate=new Date();  
        currentTimeLabel.setText("當前時間:");  

        this.setLayout(new BorderLayout());  
        JPanel pNorth=new JPanel(new GridLayout(2,1));  
        pNorth.add(currentTimeLabel);  
        pNorth.add(showTimeJButton);  
        this.add(pNorth,BorderLayout.NORTH);             //添加當前時間Label  
        this.add(scrollPane,BorderLayout.CENTER);                   //添加  
        JPanel panel=new JPanel(new GridLayout(2,2));  
        panel.add(quanJButton);  
        panel.add(secondButton);  
        panel.add(startJButton);  
        panel.add(stopJButton);  
        this.add(panel,BorderLayout.SOUTH);  
        t=new Thread(this);  
        t.start();  
        startJButton.addActionListener(this);  
        quanJButton.addActionListener(this);  
        secondButton.addActionListener(this);  
        stopJButton.addActionListener(this);  
    }  
    @Override  
    public void run() {  
        // TODO Auto-generated method stub  
        try {  
            while(true){  
                int mHour=new Date().getHours();  
                int mMin=new Date().getMinutes();  
                int mSec=new Date().getSeconds();  
                int mTotalTime=mHour*3600+mMin*60+mSec;  
                int diffHour=(mTotalTime-totalTime)/3600;  
                int diffMin=(mTotalTime-totalTime)%3600/60;  
                int diffSec=(mTotalTime-totalTime)%3600%60;  
                Thread.sleep(10);  
                currentTimeLabel.setText("當前時間:"+mHour+":"+mMin+":"+mSec);  
                if(!flag){  
                    showTimeJButton.setText(""+diffHour+"-"+diffMin+"-"+diffSec);  
                }//if(!flag)  
            }//while  

        } catch (Exception e) {  
            // TODO: handle exception  
            e.printStackTrace();  
        }  

    }  
    @SuppressWarnings("deprecation")  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        // TODO Auto-generated method stub  
        if(e.getSource()==startJButton){  
            hour= (new Date()).getHours();  
            min=(new Date()).getMinutes();  
            sec=(new Date()).getSeconds();  
            totalTime=hour*3600+min*60+sec;  
            startJButton.setEnabled(false);  
            quanJButton.setEnabled(true);  
            secondButton.setEnabled(true);  
            flag=false;  
        }  
        //if(!flag){  
            int xhour=new Date().getHours();           //獲得此刻小時  
            int xmin=new Date().getMinutes();          //獲得此刻分鐘  
            int xSec=new Date().getSeconds();          //獲得此刻秒  
            int xTotalTime=xhour*3600+xmin*60+xSec;    //獲取此刻總時間  

            int bHour=(xTotalTime-totalTime)/3600;  
            int bMin=(xTotalTime-totalTime)%3600/60;  
            int bSec=(xTotalTime-totalTime)%3600%60;  

            //quanJButton  
            if(e.getSource()==quanJButton){  
                resultTimeText.append("第"+(i++)+"圈:"+bHour+":"+bMin+":"+bSec+"\n");  
                scrollPane.add(resultTimeText);  
                secondButton.setEnabled(false);  
            }//quanJButton  

            //secondButton  
            if(e.getSource()==secondButton){  
                resultTimeText.append(bHour+":"+bMin+":"+bSec+"\n");  
                scrollPane.add(resultTimeText);  
                quanJButton.setEnabled(false);  
            }//secondButton  

            //stopJButton  
            if(e.getSource()==stopJButton){  
                if(stopJButton.getText()=="停止"){  
                    //System.out.println("Test停止");  
                    hour=0;  
                    sec=0;  
                    min=0;  
                    stopJButton.setText("清除");  
                    quanJButton.setEnabled(false);  
                    secondButton.setEnabled(false);  
                    flag=true;  
                }//stopJButton.getText()=="停止"  
                else if(stopJButton.getText()=="清除"){  
                    i=1;  
                    stopJButton.setText("停止");  
                    resultTimeText.setText("");  
                    startJButton.setEnabled(true);  
                    showTimeJButton.setText("00-00-00");  
                }//stopJButton.setText("清除");  
            }//stopJButton  
        }//if(!flag)  
    //  flag=false;  
    //}//if(!flag)  
    public static void main(String args[]){  
        JFrame jf=new JFrame("Demo");  
        try{  
            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");  
        }catch(Exception e){  
            e.printStackTrace();  
        }  
        TimerCountDemo xCountDemo=new TimerCountDemo();  
        jf.setBounds(200,200,250,300);  
        jf.getContentPane().add(xCountDemo);  
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        jf.setVisible(true);  
    }  
}  </pre> 




來自:http://blog.csdn.net/carvin_zh/article/details/46509087

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!