12

JFrameのボタンがクリックされたときにポップアップダイアログを既存のJFrameウィンドウの上に中央揃えで配置する単純なJavaSwingコード/Webリソースを表示できますか?

4

4 に答える 4

27

ああ..それはとても簡単です:

JDialog を含む JFrame があり、JDialog (開いたとき) を JFrame の真上に配置したいとします。

したがって、JDialog コンストラクターでは、次のようなものが必要です。

public class MyDialog extends JDialog 
public MyDialog(JFrame parent) 
{
    super.setLocationRelativeTo(parent); // this will do the job
}

つまり、JFrame ポインターをダイアログに渡し、setLocationRelativeTo(...); を呼び出します。方法。

于 2009-11-04T23:38:18.923 に答える
4

私は通常、次のメソッドを呼び出します。

dialog.setLocationRelativeTo(parent);

Javadoc へのリンク

于 2009-11-04T23:40:26.753 に答える
3

どのようなポップアップ ダイアログについて話しているのですか? JOptionPane などを使用している場合は、その親コン​​ポーネントを JFrame に設定すると、自動的に JFrame ウィンドウの中央に配置されます。

JOptionPane.showMessageDialog(frame, "Hello, World!");

独自の JDialog を作成している場合は、JFrame.getLocation() を使用して JFrame の位置を取得し、JFrame.getSize() を使用してそのサイズを取得できます。そこからの計算は非常に簡単です。JFrame の中心を計算し、JDialog の幅/高さの半分を差し引いて、ダイアログの左上隅を取得します。

JDialog がまだレンダリングされていない場合、JFrame.getSize() でサイズがゼロになることがあります。その場合、JDialog.getPreferredSize() を使用して、画面にレンダリングされた後のサイズを調べることができます。

于 2009-11-04T23:35:51.193 に答える
0

ウィンドウにモーダルで中央揃えのダイアログが必要な場合...

ダイアログのコンストラクターで:

class CustomDialog extends JDialog {
    public CustomDialog(Frame owner, String title, boolean modal) {
        super(owner, title, modal);
        setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);

        ...

        setSize(150, 100);
        setLocationRelativeTo(owner);
    }
}

ダイアログを表示するには (ボタンなどを使用):

public void actionPerformed(ActionEvent e) {
    dialog.setVisible(true);
}
于 2015-02-07T13:34:12.373 に答える