请你看清楚我的问题,最好说得清楚一点.有,应该是dispose()吧
不过我真的要谢谢你,在这个地方能得到一满意的回答真的很难,有人回答就算不错了,其实我已经很高兴了

解决方案 »

  1.   

    statusFrame.setVisible(false);
    statusFrame.dispose();
    不是这样吗,你什么意思,俺不是很清楚
      

  2.   

    我是想在上面代码中的最后加上关闭线程打开的窗口,如何做?
    如果像你这么说,直接加上
    statusFrame.setVisible(false);
    statusFrame.dispose();
    根本都无法通过编译
      

  3.   

    直接stop(deprecated)
    或者设置一个标志位作为线程运行的条件,要停止线程时,更新标志位。
      

  4.   

    把它dispose掉,就是过了一定时间后
      

  5.   

    让线程自己关闭,线程启动后,在出现窗口的代码后面Thread.sleep(N*1000);睡眠N秒,然后再dispose,这样就OK了。N你自己设定
      

  6.   

    是这样的,我要把查询语句 query = "select * from sup_salary_view where salarydate = \'" + temp + "\'"; 的记录返回到JTable中,但是由于这个过程可能比较久,所以想在结果出来之前用线程打开一个新窗口,显示给用户一个等待界面,等结果出来了,系统再自动关闭所打开的窗口。但是能直接在query语句后面像以下这样做吗?你
    statusFrame.setVisible(false);
    statusFrame.dispose();
    因为statusFrame是在方法中生成的,确定编译不过了,这还用说?
    线程开始了,生成了窗口,但却不见线程结束,因为打开了窗口,所以如何才能做到我希望的结果呢,谢谢了
      

  7.   

    cyicecream(小舟) ( ) 你说得对,但是我不知道查询要执行多少秒啊
      

  8.   

    还有一个问题就是为什么会先出现一个窗口StatusFrame,并且窗口中的Label没有内容,窗口是灰色的。接着结果集出来之后,灰色窗口被关闭,弹出一新窗口StatusFrame,窗口Label中显示"  系统正在返回记录集,请稍候...  ",窗口并没有给关闭。而且只看"线程开始",没有看到线程结束,直到关闭新的StatusFrame窗口,才出现"线程关闭"。
    有一地方我觉得奇怪,为什么会先出现一窗口,再出现一窗口呢,我只生成了一个对象啊,是窗口刷新显示的问题吗?
    各位一定要帮帮我,这个问题我变着标题问了好多次了,一个星期有多了,始终都没有人回答,真郁闷啊~~~~~~~~~~~~~~~~~~~
    各位如何遇到这样问题呢,通常是如何解决的?
    以下是我的StatusFrame类代码:
    import java.awt.*;
    import javax.swing.*;class StatusFrame extends JDialog
    {
    StatusFrame(JFrame owner, String title, boolean modal)
    {
    super(owner,title,modal);

    Dimension wndSize = getToolkit().getScreenSize();
    //setBackground(Color.YELLOW);
    setBounds(wndSize.width/4,wndSize.height/4,280,50);
        setResizable(false);
        //去掉标题栏
        //setUndecorated(true);
             
        getContentPane().add(label,BorderLayout.CENTER);
        //this.pack();
        //this.setVisible(true);
        

    }

    void setLabel()
    {
    label.setText("  系统正在返回记录集,请稍候...  ");
    }

    void setLabel(String labelText)
    {
    label.setText("  正在计算 " + labelText + " 月份工资,请稍候...");

    }

    JLabel label = new JLabel();

    }
      

  9.   

    可以换个角度的呀,你把StatusFrame类的实例化放在外面。
    线程初始化的时候把这个实例传递给线程,线程启动的时候只是调用这个实例的show方法。
    在你查询完数据库后在对此实例调用setVisible(false);和dispose();的方法把此对象关闭--同时也能让那个线程停止了吧。至于你说的另外一个问题就不太清楚了,因为我最近都没搞java的图形化的东东。
      

  10.   

    让用户自己关闭frame,关闭frame时停止线程
        frame.addWindowListener(new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
    //停止你的线程
    }}
      

  11.   

    你必须起新线程来实现你要求的自动关闭组件,不能能直接在query语句后面dispose
      

  12.   

    这样可以:同意在主类中进行,比如打开窗口用主类的showInformationMessage方法,
    关闭用closeInformationMessage方法。
    比如:
    public Main{
    ......
    private static JDialog dlgWorkingDialog = null;
       public static void showInformationMessage(JFrame _frm,String _msgid){}
    public static void closeInformationMessage(){
         if( dlgWorkingDialog != null ) {
           dlgWorkingDialog.setVisible(false);
           dlgWorkingDialog.dispose();
           dlgWorkingDialog = null;
         }
       }
    ......}
      

  13.   

    class DisposeDlg extends Thread{
        public void run(){
          try{
            process.join();//等待事务处理线程结束,process为你的事务处理线程
          }catch(InterruptedException e){
            System.out.println("Exception:" + e);
          }
          clueDlg.dispose();//关闭提示框
        }
      }
      

  14.   

    我刚才说的就是用一个类来管理你要弹出的这些信息框,
    比如你线程中调用Main.show*****的方法(方法的具体内容搂主根据自己的情况写)
    弹出一个对话框,要关闭就用Main.close****方法。