Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更改基于JPanel的swing应用程序(或窗口)的默认图标_Java_Swing_Icons - Fatal编程技术网

Java 如何更改基于JPanel的swing应用程序(或窗口)的默认图标

Java 如何更改基于JPanel的swing应用程序(或窗口)的默认图标,java,swing,icons,Java,Swing,Icons,对于这个问题,当它是JFrame时,我已经看到了很多答案,但是对于JPanel,没有一个答案,而且我所尝试的一切都不起作用 所以基本上我已经编写了这个简单的类/应用程序,它扩展了JPanel,并且一切正常。现在我想更改默认图标 有什么想法吗?正如大家在评论中所说的那样,请重新考虑你想做什么。 更改图标的唯一选项是为面板为子级的框架设置图标,因为图标是框架的一部分/属于框架 如果希望将图标设置为面板的功能,则在addNotify()方法中(当组件接收到父对象时调用该方法),查看面板的父对象及其父对

对于这个问题,当它是
JFrame
时,我已经看到了很多答案,但是对于
JPanel
,没有一个答案,而且我所尝试的一切都不起作用

所以基本上我已经编写了这个简单的类/应用程序,它扩展了
JPanel
,并且一切正常。现在我想更改默认图标


有什么想法吗?

正如大家在评论中所说的那样,请重新考虑你想做什么。 更改图标的唯一选项是为面板为子级的框架设置图标,因为图标是框架的一部分/属于框架

如果希望将图标设置为面板的功能,则在addNotify()方法中(当组件接收到父对象时调用该方法),查看面板的父对象及其父对象,依此类推,直到到达框架并为其设置图标

如果面板是其内容窗格,则示例显示了要进入框架必须经过的多个父级

        JPanel p = new JPanel();
        JFrame f = new JFrame();
        f.setContentPane(p);
        System.out.println(SwingUtilities.windowForComponent(p));

如果面板未嵌入窗口(JFrame、JDialog、JWindow),则无法使其可见。你到底想做什么?JPanel只是一个容器,没有窗口,所以它周围必须有JFrame、JDialog或JApplet。好的,谢谢你的更正。我没有注意到JFrame,现在我注意到了。我试着投票关闭它,但是对话框给了我很多选择,没有一个与我的案例相关,尽管有人选择了“不是一个真正的问题”。好的,现在我知道了,还有一个类有JFrame,谢谢!使用SwingUtilities.windowForComponent(…)获取帧,而不是getParent()方法。@camickr我不知道它的存在。吸取的教训。干杯。:)