处理Shell而不处理Display(父级)

时间:2012-11-27 14:46:10

标签: java swt

我使用SWT库时遇到了Java项目的问题。这是我第一次尝试使用SWT,所以请不要向我扔石头。

环境:Eclipse - Juno

课程和职能:

1º客户 - >哪里是“主要”。创建一个“GUI_Creator”类(我的)对象。

2ºGUI_Creator - >有两个功能,以“设计”我的形式。

2.1 - > MakeLogIn - > Void方法,将我需要的控件添加到Shell中我给他作为参数。我用它来设计我向用户展示的第一个表格。

此函数还链接此shell按钮的“click”事件,以及GUI_Creator类的第二个函数,它创建一个新的shell。然后,这个shell将打开,第一个将被关闭。

2.2 - > MakeClient - >该函数返回一个shell var。对我来说,这会返回我程序的第二个shell,即使是设计等等。

问题:

我正在使用,在“主要”这段代码的末尾:

while (!Conexion.isDisposed())
{
   if (!ourDisplay.readAndDispatch())
      ourDisplay.sleep();
}

ourDisplay.dispose(); 

如果我没错,这段代码就是在我尝试关闭我的第一个shell时,然后只打开第二个shell,我的程序完全关闭,因为我正在处理父显示。

但是,我无法删除此代码,因为如果我这样做,当我运行我的程序时,它不“等待”一个动作,只是执行所有“主”代码,然后关闭GUI和节目最终确定。

所以,我真的不知道我该怎么做才能解决这个问题。

谢谢, BTC

1 个答案:

答案 0 :(得分:1)

我不确定我的问题是否正确,但您可以尝试:

while (!(shell1.isDisposed() && shell2.isDisposed())) {
...
}