Java Swing で JDialog を作成したいと考えています。これは、開いているときに親ウィンドウにアクセスできません (Microsoft Word でファイル エクスプローラー ダイアログを開くときと同じです)。この動作を提供する JDialog クラスのメソッドはありますか?
4 に答える
use JDialog.setModal(true) before setting dialog visible
JDialog yourdialog = ...
yourdialog.setModal(true);
...
yourdialog.setVisible(true);
次の 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);
最初のオプションははるかにシンプルで、特にモーダル ダイアログで好んで使用する傾向があります。
AdamskiとJanはどちらもすでに正解ですが、モーダルウィンドウの概念が説明されていることを確認したかっただけです。
OPは、親へのアクセスをブロックするダイアログについて質問しました。これは、モーダルダイアログ(またはモーダルウィンドウ)と呼ばれます。ウィキペディアはこの定義を与えています:
ユーザーインターフェイスの設計では、モーダルウィンドウは子ウィンドウであり、ユーザーが親アプリケーションの操作に戻る前に、モーダルウィンドウを操作する必要があります。
つまり、「モーダル」は親ウィンドウをブロックすることを意味し(ユーザーはモーダルウィンドウ以外のウィンドウと対話できない)、「非モーダル」または「モードレス」は子ウィンドウと親ウィンドウに同時にアクセスできることを意味します。
これは、Swingフレームワークだけでなく、GUIフレームワーク全般に存在する概念です。使用するGUIフレームワークでは、プロパティを探すことでこの種の機能を見つけることができmodal
ます。
JFrame Parent 内で JDialog をロックするにはどうすればよいですか? JDialog.setModal を使用すると、他のアプリケーションのダイアログと同じように jdialog を作成できるのは事実です。jDialogを閉じる前にすべてのフレームを停止しました