package com;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JTextField; import com.zhihanglee.swing.Console; public class Counter extends JApplet{
private int count=0;
private JButton
start=new JButton("start"),
onOff=new JButton("onOff");
private boolean runFlag=true;
JTextField textField=new JTextField(10);
public void init(){
Container container=getContentPane();
container.setLayout(new FlowLayout());
container.add(this.textField);
this.start.addActionListener(new StartL());
container.add(this.start);
this.onOff.addActionListener(new OnOffL());
container.add(this.onOff); }
public void go(){
for(int i=0;i <10;i++){
try{
Thread.sleep(1000);
}catch(InterruptedException ex){
ex.printStackTrace();
}
if(this.runFlag)
this.textField.setText(Integer.toString(i));
}
}
class StartL implements ActionListener{ public void actionPerformed(ActionEvent e) {
go();
}
}
class OnOffL implements ActionListener{ public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
runFlag=!runFlag;
} }
}
为什么当我运行上面程序时,textField中的文本内容没有变化,而等了10秒之后,才一下子显示出 9 (调用Thread.sleep(1000)时,一秒后,线程不是已经醒了么? 不是可以继续往下执行么?如果可以继续往下执行,textField中的内容应该会逐渐变化啊....而不是等了10秒之后,才一下子显示出 9),
为什么...
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JTextField; import com.zhihanglee.swing.Console; public class Counter extends JApplet{
private int count=0;
private JButton
start=new JButton("start"),
onOff=new JButton("onOff");
private boolean runFlag=true;
JTextField textField=new JTextField(10);
public void init(){
Container container=getContentPane();
container.setLayout(new FlowLayout());
container.add(this.textField);
this.start.addActionListener(new StartL());
container.add(this.start);
this.onOff.addActionListener(new OnOffL());
container.add(this.onOff); }
public void go(){
for(int i=0;i <10;i++){
try{
Thread.sleep(1000);
}catch(InterruptedException ex){
ex.printStackTrace();
}
if(this.runFlag)
this.textField.setText(Integer.toString(i));
}
}
class StartL implements ActionListener{ public void actionPerformed(ActionEvent e) {
go();
}
}
class OnOffL implements ActionListener{ public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
runFlag=!runFlag;
} }
}
为什么当我运行上面程序时,textField中的文本内容没有变化,而等了10秒之后,才一下子显示出 9 (调用Thread.sleep(1000)时,一秒后,线程不是已经醒了么? 不是可以继续往下执行么?如果可以继续往下执行,textField中的内容应该会逐渐变化啊....而不是等了10秒之后,才一下子显示出 9),
为什么...
{
public static void main(String[] args){
for(int i=0;i<10;i++){
try{
Thread.sleep(1000);
System.out.println(i);
}catch(Exception e){
e.printStackTrace();
}
}
}
}