2013-07-23 13 views
0

我有一个JDialogJPanel如何从其JPanel内容更改JDialog图标?


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

回答

3

,因为你调用从withing面板的构造这些方法返回null。当面板构建完成后,它还没有添加到对话框中。

任一组来自外部的图标:

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

或添加AncestorListener到面板时,它的被可见被notigied,并设置从听者方法的图标。

+0

是的,我明白了。谢谢你,我不能投票,我在这里是新的:) –

+0

嗯,你仍然生活在恐龙边缘'dialog.show();' – mKorbel

+0

我只是想显示在OP的代码中,添加图标设置指令。但是,我同意,应该使用setVisible()。 –