JFrameのボタンがクリックされたときにポップアップダイアログを既存のJFrameウィンドウの上に中央揃えで配置する単純なJavaSwingコード/Webリソースを表示できますか?
4 に答える
ああ..それはとても簡単です:
JDialog を含む JFrame があり、JDialog (開いたとき) を JFrame の真上に配置したいとします。
したがって、JDialog コンストラクターでは、次のようなものが必要です。
public class MyDialog extends JDialog
public MyDialog(JFrame parent)
{
super.setLocationRelativeTo(parent); // this will do the job
}
つまり、JFrame ポインターをダイアログに渡し、setLocationRelativeTo(...); を呼び出します。方法。
どのようなポップアップ ダイアログについて話しているのですか? JOptionPane などを使用している場合は、その親コンポーネントを JFrame に設定すると、自動的に JFrame ウィンドウの中央に配置されます。
JOptionPane.showMessageDialog(frame, "Hello, World!");
独自の JDialog を作成している場合は、JFrame.getLocation() を使用して JFrame の位置を取得し、JFrame.getSize() を使用してそのサイズを取得できます。そこからの計算は非常に簡単です。JFrame の中心を計算し、JDialog の幅/高さの半分を差し引いて、ダイアログの左上隅を取得します。
JDialog がまだレンダリングされていない場合、JFrame.getSize() でサイズがゼロになることがあります。その場合、JDialog.getPreferredSize() を使用して、画面にレンダリングされた後のサイズを調べることができます。
ウィンドウにモーダルで中央揃えのダイアログが必要な場合...
ダイアログのコンストラクターで:
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);
}