rt,有两个JFrame,其中一个为MainWindow(主窗口),另外一个为SessionWindow,在MainWindow中触发某个菜单项即可创建并显示SessionWindow到前台来。我在SessionWindow重载了show()方法(因为直接调用JFrame缺省的show()方法不能将SessionWindow()显示到前台来),其代码如下:
EventQueue.InvokeLater(new Runnable() {
void run()
{
super.show();
setstate(JFRAME.ICONIFIED);
setstate(JFRAME.NORMAL);
}
});
一般情况下能达到要求,但是平均差不多10次总有一次SessionWindow显示不到前台,而是在MainWindow后面,后来也尝试在代码后面加上:
tofront();
requestFocus();
以及将run方法中的语句直接拿出来执行,只是出现显示不到前台的几率小一些,但是还是不能绝对避免,不知道大虾们有什么好办法,谢谢了
btw,在创建SessionWindow并显示的过程中,MainWindow中有线程正在执行任务,但其中没有与界面直接相关的部分,不知道与这个有关没有。
还望有经验的大虾指教,谢谢了
EventQueue.InvokeLater(new Runnable() {
void run()
{
super.show();
setstate(JFRAME.ICONIFIED);
setstate(JFRAME.NORMAL);
}
});
一般情况下能达到要求,但是平均差不多10次总有一次SessionWindow显示不到前台,而是在MainWindow后面,后来也尝试在代码后面加上:
tofront();
requestFocus();
以及将run方法中的语句直接拿出来执行,只是出现显示不到前台的几率小一些,但是还是不能绝对避免,不知道大虾们有什么好办法,谢谢了
btw,在创建SessionWindow并显示的过程中,MainWindow中有线程正在执行任务,但其中没有与界面直接相关的部分,不知道与这个有关没有。
还望有经验的大虾指教,谢谢了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货