问题描述
packagecom.bonson.frame;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;/****@date2013-12-19下午11:44:33*@authorqinfz**/publicclassTestextendsJFrame{publicTest(){JButtonb=newJButton("确定");this.add(b);b.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){Test2.getInstance().setVisible(true);for(inti=0;i<1000;i++){for(intj=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();}/***@date2013-12-19下午11:44:33*@authorqinfz*@paramargs*/publicstaticvoidmain(String[]args){newTest();Test2.getInstance().setVisible(true);for(inti=0;i<1000;i++){for(intj=0;j<1000;j++){System.out.println(1);}}Test2.getInstance().setVisible(false);}}classTest2extendsJFrame{privatestaticTest2t=newTest2();publicstaticTest2getInstance(){returnt;}privateTest2(){JLabelb=newJLabel("你好");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是单线程的注意