我有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
答案 0 :(得分:3)
它返回null,因为您正在使用面板的构造函数调用这些方法。构建面板时,它尚未添加到对话框中。
从外面设置图标:
MyPanel panel = new MyPanel();
JDialog dialog = new JDialog();
dialog.add(panel);
dialog.setIconImage(...);
dialog.show();
或将AncestorListener添加到要显示的面板上,并从侦听器方法设置图标。