swing 事件处理的时为什么会这样?
package com.bonson.frame;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
/**
*
* @date 2013-12-19 下午11:44:33
* @author qinfz
*
*/
public class Test extends JFrame {
public Test(){
JButton b=new JButton("确定");
this.add(b);
b.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
Test2.getInstance().setVisible(true);
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
System.out.println(1);
}
}
Test2.getInstance().setVisible(false);
}
});
this.setBounds(100,100, 200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.validate();
}
/**
* @date 2013-12-19 下午11:44:33
* @author qinfz
* @param args
*/
public static void main(String[] args) {
new Test();
Test2.getInstance().setVisible(true);
for(int i=0;i<1000;i++){
for(int j=0;j<1000;j++){
System.out.println(1);
}
}
Test2.getInstance().setVisible(false);
}
}
class Test2 extends JFrame{
private static Test2 t=new Test2();
public static Test2 getInstance(){
return t;
}
private Test2(){
JLabel b=new JLabel("你好");
this.add(b);
this.setBounds(300,100, 200, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.validate();
}
}
这段代码里主线程的Test2窗口能正常显示,但是test按钮的事件处理中test2窗口的组件不能正常显示,为什么?我的需求是用户点击保存按钮先打开一个请稍后的提示窗口,然后客户端将数据发到服务器端保存,服务器端返回数据后关闭提示窗口,可提示窗口的内容始终显示不出来
--------------------编程问答-------------------- 我运行了下,是可以显示出来的,只不过一直在刷新。
你事件处理代码有问题吧。
你for循环和Test2.getInstance().setVisible(true);在同一个线程里面。
Test2窗口刚显示出来,线程就去打印for循环了,Test2窗口都死了!!! --------------------编程问答-------------------- sing是单线程的 注意
补充:Java , Java SE