joptionpane staticメソッドによって作成されたオブジェクトへの参照を保持する
-
13-10-2019 - |
質問
JoptionPaneの静的な方法の1つによって作成された(jdialog?)オブジェクトへの参照を取得できるのだろうか(例:showmessagedialog)。ダイアログが画面に表示される位置を変更するつもりです。より具体的には、デフォルトでは、ウィンドウの中央ではなく、メインアプリウィンドウの左上隅にダイアログを表示したいと思います。したがって、オブジェクトへの参照を持つことで、セットロケーションを使用して望ましい効果を実現できます...
どんな提案も感謝します!ありがとう!
解決
静的 showXXXDialog()
方法は便利なためです。ソースコードを見ると JOptionPane
, 、実際には、a JOptionPane
オブジェクトは、指定したオプションに基づいて作成され、次に作成されます JOptionPane.createDialog(...)
呼ばれています。別の位置でメッセージダイアログを表示する1つの方法は、次のとおりです。
JOptionPane pane = new JOptionPane("Message", JOptionPane.WARNING_MESSAGE,
JOptionPane.DEFAULT_OPTION);
JDialog dialog = pane.createDialog("TITLE");
dialog.setLocation(0, 0);
dialog.setVisible(true);
// dialog box shown here
dialog.dispose();
Object selection = pane.getValue();
パラメーターの組み合わせがあります JOptionPane
コンストラクター、および JOptionPane
メソッドを設定すると、静的メソッドで行ったであろうことは何でもできます。さらに、にアクセスできます。 JDialog
オブジェクト自体。
編集: :(OPの入力ダイアログの例を追加するには)
JOptionPane pane = new JOptionPane("Message", JOptionPane.QUESTION_MESSAGE,
JOptionPane.OK_CANCEL_OPTION, null, null, null);
pane.setWantsInput(true);
JDialog dialog = pane.createDialog(null, "Title");
dialog.setLocation(0, 0);
dialog.setVisible(true);
String str = (String) pane.getInputValue();
他のヒント
JoptionPaneは指定されたものを使用します parentComponent
(最初のメソッドパラメーター)ダイアログの中心を決定するための(たとえば、javax.swing.joptionpane.showmessageialog(コンポーネント、オブジェクト))
ダイアログを別の場所に配置する偽のコンポーネントを渡すことができます。たとえば、次のようになります。
JFrame frame = new JFrame("Test");
frame.setLocation(100, 100);
frame.setSize(500, 500);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// 'Invisible' fake component for positioning
JWindow c = new JWindow();
c.setSize(0, 0);
c.setVisible(true);
Point location = frame.getLocation();
location.translate(200, 100);
c.setLocation(location);
JOptionPane.showInputDialog(c,"Foo");