如何从JPanel内容更改JDialog图标?

时间:2013-07-23 14:45:39

标签: java swing nullpointerexception jpanel jdialog

我有JDialogJPanel


...
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

1 个答案:

答案 0 :(得分:3)

它返回null,因为您正在使用面板的构造函数调用这些方法。构建面板时,它尚未添加到对话框中。

从外面设置图标:

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

或将AncestorListener添加到要显示的面板上,并从侦听器方法设置图标。