如何在Swing中全局设置应用程序的图标?

时间:2020-03-06 14:26:40  来源:igfitidea点击:

我知道我可以为每种形式或者根形式指定一个,然后它将级联到所有子形式,但是我想有一种方法可以覆盖所有形式的默认Java Coffee Cup,即使那些我可能会忘记。

有什么建议?

解决方案

扩展JDialog类(例如,将其命名为MyDialog)并在构造函数中设置图标。然后,所有对话框都应扩展实现(MyDialog)。

我们可以将根形式(我假设我们是指" JFrame")设为自己的JFrame子类,并将标准功能放入其构造函数中,例如:

this.setIconImage(STANDARD_ICON);

我们也可以在此处捆绑其他标准内容,例如将框架的窗口度量标准存储为用户首选项,管理初始窗格等。

该框架产生的任何新框架也将是此JFrame子类的实例。我们唯一需要记住的是实例化子类,而不是JFrame。我认为没有其他方法可以记住执行此操作,但是至少现在要记住一个子类而不是" setIconImage"调用(可能还有其他功能)。

另外,如果我们有一个"主"窗口,并且正确设置了其图标,只要我们将该主窗口用作所有Dialog类的"父"窗口,它们将继承该图标。不过,任何新框架都需要在其上设置图标。

正如Paul / Andreas所说,继承JFrame是最好的选择。

还有另一种方法,但它更多的是"破解",然后才是真正的解决方法。

如果使用应用程序分发JRE,则可以使用自己的图标替换java exe / dll / rt.jar中的咖啡杯图标资源。可能不是很合法,但是有可能...