package com.swing.demo; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * http://download.oracle.com/javase/tutorial/uiswing/concurrency/initial.html * * Swing event operate 线程案例 * * @author Dawning * */ public class FrameGo extends Frame implements Runnable { private static final long serialVersionUID = 1L; private TextField text = new TextField(10); private Button start = new Button("Start"); private Button end = new Button("End"); private boolean flag = false; FrameGo() { this.setLayout(new FlowLayout()); add(text); add(start); add(end); start.addActionListener(new Start()); end.addActionListener(new End()); } public void run() { int count = 0; while(true && count < 50) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } if(flag) { count++; text.setText(String.valueOf(count)); } } } private class Start implements ActionListener { public void actionPerformed(ActionEvent e) { flag = true; } } private class End implements ActionListener { public void actionPerformed(ActionEvent e) { flag = false; } } public static void main(String[] args) { FrameGo fg = new FrameGo(); Thread th = new Thread(fg); th.start(); fg.setSize(300, 200); fg.setVisible(true); } }