0

私は持っていJDialogますJPanel


...
MyPanel panel = new MyPanel();
JDialog dialog = new JDialog();
dialog.add(panel);
dialog.show();
...

public class MyPanel extends javax.swing.JPanel {
    ....
}

ダイアログを開いたときに MyPanel クラスからダイアログのアイコンを変更するにはどうすればよいですか?

私のコード:

...    
initComponents();

1. ((JFrame)((JDialog)this.getParent()).getOwner()).setIconImage(img);

2. Window win = SwingUtilities.getWindowAncestor(this);
   win.setIcon(img);

どちらも NullPointerException を返しています

4

1 に答える 1

3

パネルのコンストラクター内からこれらのメソッドを呼び出しているため、null が返されます。パネルが構築されたとき、まだダイアログに追加されていません。

外部からアイコンを設定するか:

MyPanel panel = new MyPanel();
JDialog dialog = new JDialog();
dialog.add(panel);
dialog.setIconImage(...);
dialog.show();

または、AncestorListener をパネルに追加して、パネルが表示されたときに通知されるようにし、リスナー メソッドからアイコンを設定します。

于 2013-07-23T14:50:35.277 に答える