|
发表于 2021-4-23 10:45:01
|
显示全部楼层
第二次是线程阻塞问题.你阻止了主线程,所以无法显示,为了使你这个有不大的改动,我用的这种方法修改:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Text extends JFrame implements ActionListener,Runnable { //加了一个线程接口.
JButton tb = new JButton("开始");
int a = 0;
JTextField text = new JTextField("", 10);
JTextField text1 = new JTextField("5", 10);
//Thread th=new Thread(this);
Text() {
super("text测试");
setSize(100, 150);
setLocation(200, 300);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(text);
getContentPane().add(tb);
getContentPane().add(text1);
tb.addActionListener(this);
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
text.setEnabled(false);
run(); //------------------>相当于执行一次你的begin方法.
}
public void run() { //------->begin改为run,是为了重载.
int i = 0;
a = Integer.parseInt(text1.getText().trim());
while (a > 0) {
a--;
i = 50;
while (i > 0) {
i--;
System.out.print(" " + i);
text.setText(""+i);
try {
Thread.sleep(50);
}
catch (Exception e) {}
}
}
}
public void actionPerformed(ActionEvent ee) {
new Thread(this).start();//--->主要就是这儿了,新建一个线程,这样才不会影响主线程
}
public static void main(String srgs[]) {
new Text();
}
}
|
|