2

我对使用 SWT 库的 Java 项目有疑问。这是我第一次尝试使用 SWT,所以请不要向我扔石头。

环境:Eclipse - Juno

类和函数:

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

2º GUI_Creator -> 有 2 个功能,以便“设计”我的表单。

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

此函数还将此 shell 的按钮的“单击”事件与 GUI_Creator 类的第二个函数链接,该函数创建一个新的 shell。然后,这个外壳将打开,第一个外壳将关闭。

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

问题:

我在“main”的末尾使用了这段代码:

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

ourDisplay.dispose(); 

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

但是,我不能删除这段代码,因为如果我这样做,当我运行我的程序时,它不会“等待”一个动作,而是执行所有“主要”代码,然后关闭 GUI,程序完成。

所以,我真的不知道我该怎么做才能解决这种情况。

谢谢,比特币

4

1 回答 1

1

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

while (!(shell1.isDisposed() && shell2.isDisposed())) {
...
}
于 2012-11-27T14:57:19.703 回答