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

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

有什么建议么?

您可以将根表单(我假设您的意思是JFrame )作为您自己的JFrame子类,并将标准function放在其构造函数中,例如:

 this.setIconImage(STANDARD_ICON); 

您也可以在此处捆绑其他标准内容,例如将框架的窗口度量标准记忆为用户首选项,管理启动窗格等。

由此产生的任何新帧也将是此JFrame子类的实例。 您唯一需要记住的是实例化您的子类,而不是JFrame 。 我不认为有任何替代记住这样做,但至少现在它是一个记住子类而不是setIconImage调用(可能还有其他function)的问题。

还有另一种方式,但它更像是一个“黑客”,然后是一个真正的解决方案….

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

此外,如果您有一个“主”窗口,并正确设置其图标,只要您将该主窗口用作任何Dialog类的“父”,它们将inheritance该图标。 但是,任何新的帧都需要在它们上面设置图标。

正如Paul / Andreas所说,inheritanceJFrame将是你最好的选择。

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