Как мне установить значок приложения глобально в Swing?
Я знаю, что могу указать одну для каждой формы или для корневой формы, и тогда она будет каскадно распространяться на все дочерние формы, но я хотел бы иметь возможность переопределить Java Coffee Cup по умолчанию для всех форм, даже тех, которые Я мог бы забыть.
Какие-либо предложения?
4 ответа
Вы можете сделать корневую форму (под которой я предполагаю, что вы имеете в виду JFrame
) быть вашим собственным подклассом JFrame
и поместите стандартную функциональность в его конструктор, такой как:
this.setIconImage(STANDARD_ICON);
Здесь вы также можете объединить другие стандартные вещи, такие как запоминание метрик окна фрейма в качестве пользовательских настроек, управление всплывающими панелями и т. Д.
Любые новые кадры, порожденные этим, также могут быть JFrame
подкласс. Единственное, что вы должны помнить, это создать свой подкласс вместо JFrame
, Я не думаю, что есть какая-то замена для того, чтобы помнить, чтобы сделать это, но, по крайней мере, теперь нужно помнить подкласс вместо setIconImage
вызов (среди, возможно, других функций).
Есть и другой способ, но это скорее "взлом", чем реальное исправление....
Если вы распространяете JRE вместе со своим Приложением, вы можете заменить ресурс значка кофейной чашки в java exe/dll/rt.jar, где бы он ни находился, своим собственным значком. Это может быть не совсем законно, но это возможно...
Кроме того, если у вас есть одно "главное" окно и правильно установлен его значок, при условии, что вы используете это главное окно в качестве "родительского" для любых классов Dialog, они будут наследовать значок. Любые новые фреймы должны иметь иконку на них.
Как сказал Пол / Андреас, подклассы JFrame будут вашим лучшим выбором.
Расширьте класс JDialog (например, назовите его MyDialog) и установите значок в конструкторе. Тогда все диалоги должны расширять вашу реализацию (MyDialog).