0

我有一个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

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 回答