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

标签 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

最佳答案

它返回 null,因为您是从面板的构造函数中调用这些方法。当构建面板时,它还没有添加到对话框中。

从外部设置图标:

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

或者将 AncestorListener 添加到面板,以便在面板可见时进行通知,并通过监听器方法设置图标。

关于java - 如何从其 JPanel 内容更改 JDialog 图标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17813514/

相关文章:

java - 如何配置 ORMLite 将 `byte[]` 保存为 DataType.BYTE_ARRAY?

java - JTextPane : How do you update it after adding it to a layout?

java - 如何使用变量更改文本字段的字体

java - 什么是NullPointerException,我该如何解决?

java - 带有 list 文件的 Android 元数据 - nullPointerException

java - jTable 不断抛出 NullPointerException

java - Hibernate 命名查询 Order By 参数

java - 相当于java中的curl命令

java - 在 Java 中处理大数字

java - 具有自己的对象的组合框