2

SWT ライブラリを使用する Java プロジェクトに問題があります。SWT を試すのは初めてなので、石を投げないでください。

環境: Eclipse - ジュノ

クラスと機能:

1º クライアント -> 「メイン」はどこですか。「GUI_Creator」クラス(私のもの)のオブジェクトを作成します。

2º GUI_Creator -> フォームを「設計」するために 2 つの機能があります。

2.1 -> MakeLogIn -> Void メソッド。必要なコントロールをシェルに追加し、パラメータとして指定します。私はそれを使用して、ユーザーに表示する最初のフォームを設計します。

この関数はまた、このシェルのボタンの「クリック」イベントを、新しいシェルを作成する GUI_Creator クラスの 2 番目の関数とリンクします。次に、このシェルが開き、最初のシェルが閉じます。

2.2 -> MakeClient -> この関数はシェル変数を返します。私にとって、これはデザインなどがあっても、プログラムの2番目のシェルを返します。

問題:

「メイン」の最後にこのコードを使用しています:

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

ourDisplay.dispose(); 

私が間違っていなければ、このコードは、最初のシェルを閉じようとして、2番目のシェルだけを開いたままにしておくと、親ディスプレイを破棄しているため、プログラムが完全に閉じます。

ただし、このコードを削除することはできません。これを行うと、プログラムを実行すると、アクションを「待機」せず、すべての「メイン」コードを実行してから GUI を閉じ、プログラムが終了するためです。

ですから、この状況を修正するために何をしなければならないのか、本当にわかりません。

ありがとう、BTC

4

1 に答える 1

1

問題が解決したかどうかはわかりませんが、次のことを試してみてください。

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