joptionpane staticメソッドによって作成されたオブジェクトへの参照を保持する

StackOverflow https://stackoverflow.com/questions/4542924

  •  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");
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top