3

Java Swing で JDialog を作成したいと考えています。これは、開いているときに親ウィンドウにアクセスできません (Microsoft Word でファイル エクスプローラー ダイアログを開くときと同じです)。この動作を提供する JDialog クラスのメソッドはありますか?

4

4 に答える 4

6

use JDialog.setModal(true) before setting dialog visible

JDialog yourdialog = ...

yourdialog.setModal(true);
...

yourdialog.setVisible(true);
于 2010-09-14T15:58:24.453 に答える
3

次の 2 つのオプションがあります。

の静的メソッドを使用しますJOptionPane。これらは、デフォルトでモーダル ダイアログを作成します。

Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JOptionPane.showMessageDialog(parentWindow, "Hello, World); // Create modal dialog aligned with parent window.

JDialog明示的に作成します。

Window parentWindow = SwingUtilities.getWindowAncestor(parentPanel);
JDialog dlg = new JDialog(parentWindow, ModalityType.APPLICATION_MODAL);

最初のオプションははるかにシンプルで、特にモーダル ダイアログで好んで使用する傾向があります。

于 2010-09-14T16:00:53.177 に答える
1

AdamskiとJanはどちらもすでに正解ですが、モーダルウィンドウの概念が説明されていることを確認したかっただけです。

OPは、親へのアクセスをブロックするダイアログについて質問しました。これは、モーダルダイアログ(またはモーダルウィンドウ)と呼ばれます。ウィキペディアはこの定義を与えています:

ユーザーインターフェイスの設計では、モーダルウィンドウは子ウィンドウであり、ユーザーが親アプリケーションの操作に戻る前に、モーダルウィンドウを操作する必要があります。

つまり、「モーダル」は親ウィンドウをブロックすることを意味し(ユーザーはモーダルウィンドウ以外のウィンドウと対話できない)、「非モーダル」または「モードレス」は子ウィンドウと親ウィンドウに同時にアクセスできることを意味します。

これは、Swingフレームワークだけでなく、GUIフレームワーク全般に存在する概念です。使用するGUIフレームワークでは、プロパティを探すことでこの種の機能を見つけることができmodalます。

于 2012-06-11T14:58:00.427 に答える
0

JFrame Parent 内で JDialog をロックするにはどうすればよいですか? JDialog.setModal を使用すると、他のアプリケーションのダイアログと同じように jdialog を作成できるのは事実です。jDialogを閉じる前にすべてのフレームを停止しました

于 2012-06-11T09:45:54.790 に答える