7

非常に具体的な問題があり、JDialogの所有者を変更する方法があるかどうかを知りたいと思いました(コンストラクターを使用して設定できます)。(ハック以外の)「公式」の可能性はないと思いますが、何かを見逃さないようにしたかったのです。トピックに関するアイデアやヒントは役に立ちます、すでに感謝しています...

4

3 に答える 3

7

アプリケーションのライフサイクル中にダイアログを再利用する方法について質問がある場合、より良い方法は次のとおりです。

  1. すべてのダイアログ コンテンツを JPanel サブクラスとして定義する
  2. 既存の JPanel サブクラス インスタンスで新しい JDialog をインスタンス化します。

ポイント 2 については、もちろん、パネルの遅延評価を使用できます (最初の使用時にのみインスタンス化してから再利用します)。

また、新しい JDialog で再利用するためにパネルを再初期化できる (独自の) インターフェースをパネルに実装する必要があります (再初期化は通常、すべてのフィールドの内容を消去するか、これらのフィールドをデフォルト値に戻すことを意味します)。

于 2009-02-17T05:26:06.130 に答える
1

私が考えることができる唯一のことは、安全でないハックに該当します(リフレクションを使用して所有者を変更しますが、JVMの異なるバージョンで変更される可能性があります(同じプラットフォームの同じベンダーからでも))。

「これは私がやろうとしていることです...本当にダイアログの所有者を変更する必要がありますか、それとももっと良い方法がありますか?」所有者を変更したい理由を考えていますが、思いつきません...

于 2009-02-16T16:37:11.033 に答える
1

じ:

表のセル内のテキストが長すぎて表示できない場合に、「メモ」ダイアログを提供するために、アプリケーションで単一の「グローバル」ダイアログが同様に必要でした。この場合、ユーザーはセルにカーソルを合わせるか右クリックして、テキスト全体を表示するダイアログを取得できます。ただし、特にホバリング時にダイアログをすばやく表示したかったので、表示と非表示を単純にしたかったのです。このダイアログを作成し、アプリケーション フレームを所有者としてメイン クラスに格納することにしました。次に、所有者がフレームであるビューがメモ ダイアログを必要とするときはいつでも、ビューはメイン クラスからそれを取得できます。ダイアログがメモ ダイアログを必要とするインスタンスでは、親ダイアログは適切な所有者でメモ ダイアログの新しいインスタンスを作成できます。これらの親ダイアログは(少なくとも私のアプリでは)閉じると破棄されるため、追加のメモ ダイアログ インスタンスは範囲外になり、ガベージ コレクションが行われます。それが役立つことを願っています。

于 2012-08-10T17:09:34.037 に答える