情况是这样的:
在一个程序里先后打开Frame1和Frame2两个窗口,这个时候Frame2是获得焦点的,然后用鼠标点一下Frame1,这个时候Frame1获得焦点了对吧,此时,出现一个JDialog(父画面的component为设定),当按了ok后焦点就回到了Frame2上而不是Frame1上。现在我就是要寻找在未设定JDialog的父画面的component时如何使dialog关闭后焦点不落在Frame2上而是落在Frame1上。希望大家给点建议啊。
在一个程序里先后打开Frame1和Frame2两个窗口,这个时候Frame2是获得焦点的,然后用鼠标点一下Frame1,这个时候Frame1获得焦点了对吧,此时,出现一个JDialog(父画面的component为设定),当按了ok后焦点就回到了Frame2上而不是Frame1上。现在我就是要寻找在未设定JDialog的父画面的component时如何使dialog关闭后焦点不落在Frame2上而是落在Frame1上。希望大家给点建议啊。
Frame2 extends JDialog{
Frame2(){
super(....,boolean modal); //此处参考jdk api的JDialog构造函数,如果modal为true,则Frame2独占焦点
}
}
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上。
设置JDialog的父窗口,调用Frame1.requestFocus()方法
这样可以吗?
就此结贴。