java多线程制作计时器
基本思路:
在类中创建thread 供按钮监听器调用。
界面设计:
代码:
1 package thread; 2 3 import java.awt.*; 4 import java.awt.event.*; 5 6 import javax.swing.*; 7 8 public class Threadtest extends JFrame implements Runnable{ 9 JFrame frm=new JFrame("watch"); 10 JPanel bottom=new JPanel(); 11 JPanel mid=new JPanel(); 12 JLabel h=new JLabel("0"); 13 JLabel biao=new JLabel(":"); 14 JLabel s=new JLabel("00"); 15 JButton hajime=new JButton("开始计时"); 16 JButton pause=new JButton("暂停"); 17 JButton tozero=new JButton("清零"); 18 Thread t=new Thread(this); 19 private int i=0,j=0; 20 public void run(){ 21 try 22 { 23 while(true){ 24 Thread.sleep(100); 25 i++; 26 if(i>=1&&i<10) 27 { 28 s.setText("0"+i); 29 } 30 else if(i>=10&&i<60) 31 s.setText(""+i); 32 if(i==60) 33 { 34 i=0; 35 j++; 36 s.setText("00"); 37 h.setText(""+j); 38 } 39 } 40 }catch(Exception e){ 41 System.out.println(""); 42 } 43 } 44 public Threadtest() 45 { 46 frm.setLayout(new BorderLayout()); 47 frm.setBounds(200, 200, 300, 150); 48 frm.setVisible(true); 49 frm.add("South",bottom); 50 frm.add("Center",mid); 51 52 mid.add(h); 53 mid.add(biao); 54 mid.add(s); 55 h.setFont(new Font("Consulas",Font.PLAIN,36)); 56 biao.setFont(new Font("Consulas",Font.PLAIN,36)); 57 s.setFont(new Font("Consulas",Font.PLAIN,36)); 58 bottom.add(hajime); 59 bottom.add(pause); 60 bottom.add(tozero); 61 62 63 hajime.addActionListener(new ActionListener(){ 64 public void actionPerformed(ActionEvent e){ 65 if(t.isAlive()) 66 t.resume(); 67 else t.start(); 68 }}); 69 pause.addActionListener(new ActionListener(){ 70 public void actionPerformed(ActionEvent e){ 71 t.suspend(); 72 }}); 73 tozero.addActionListener(new ActionListener(){ 74 public void actionPerformed(ActionEvent e){ 75 h.setText("0"); 76 s.setText("00"); 77 i=0; 78 j=0; 79 } 80 }); 81 } 82 83 public static void main(String[] args){ 84 new Threadtest(); 85 } 86 }