情况是这样的:
在一个程序里先后打开Frame1和Frame2两个窗口,这个时候Frame2是获得焦点的,然后用鼠标点一下Frame1,这个时候Frame1获得焦点了对吧,此时,出现一个JDialog(父画面的component为设定),当按了ok后焦点就回到了Frame2上而不是Frame1上。现在我就是要寻找在未设定JDialog的父画面的component时如何使dialog关闭后焦点不落在Frame2上而是落在Frame1上。希望大家给点建议啊。

解决方案 »

  1.   

    我认为还是需要设置JDialog的父窗体。
      

  2.   

    回ls,那样是最好。我只是在探讨这个问题。如果在一个vm上的话,解决方案我想出来了,现在我在想如果VM1上开了两个画面,但是VM2上报了个dialog,这种情况下该怎么解决呢?
      

  3.   

    根据JDialog的构造函数来确定焦点
    Frame2 extends JDialog{
       Frame2(){
         super(....,boolean modal); //此处参考jdk api的JDialog构造函数,如果modal为true,则Frame2独占焦点
    }
    }
      

  4.   

    lzbang朋友误解我的意思了。我是说在一个类里面开两个画面,比方
    class A{
    public static void main(String[] args){
    JFrame frame1 = new JFrame();
    JFrame frame2 = new JFrame();
    ...
    Thread.sleep(5000);
    ...
    JDialog dialog = new JDialog();
    ...
    }
    }
    在5秒里手动把焦点移动到frame1上,然后出现dialog,由于dialog的parent设成null所以dialog消失后焦点会移到frame2上。
      

  5.   


    设置JDialog的父窗口,调用Frame1.requestFocus()方法 
    这样可以吗?
      

  6.   

    不同vm间不会有这种问题,而如果是相同vm的话解决办法也已找到,不过我也认为还是设下parent frame比较好。
    就此结贴。