WindowAncestor(親ウィンドウ)の取得

編集者:Terai Atsuhiro
作成日:2005-05-09
更新日:2023-08-25 (金) 13:56:29

概要

SwingUtilities.getWindowAncestor()などで、親ウィンドウを取得します。

http://terai.xrea.jp/swing/windowancestor/screenshot.png

サンプルコード

JButton button = new JButton(new AbstractAction("フレームのタイトルを表示") {
  public void actionPerformed(ActionEvent ae) {
    final JButton btn  = (JButton)ae.getSource();
    final JFrame frame = (JFrame)SwingUtilities.getWindowAncestor(btn);
    //final JFrame frame = (JFrame)JOptionPane.getFrameForComponent(btn);
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        JOptionPane.showMessageDialog(frame,
                    "親フレームのタイトル: "+frame.getTitle(),
                    "タイトル", JOptionPane.INFORMATION_MESSAGE);
      }
    });
  }
});

解説

自分(コンポーネント)の最初の上位ウィンドウ(親ウィンドウ)を取得します。

SwingUtilities.getWindowAncestor、SwingUtilities.getRootメソッドを使うとjava.awt.Windowが、JOptionPane.getFrameForComponentメソッドの場合はjava.awt.Frameが返されます。

コメント