2008-09-19 2 views
8

Я знаю, что могу указать один для каждой формы или для корневой формы, а затем он будет каскадом для всех дочерних форм, но я хотел бы иметь способ переопределить чашку кофе Java по умолчанию для всех форм даже тех, кого я мог забыть.Как установить иконку приложения в глобальном масштабе в Swing?

Любые предложения?

ответ

9

Вы можете сделать корневую форму (с помощью которого я предполагаю, что вы имеете в виду JFrame) ваш собственный подкласс JFrame, и поставить стандартную функциональность в своем конструкторе, такие как:

this.setIconImage(STANDARD_ICON); 

Вы можете связать другие стандартные вещи здесь также, например, запоминание метрик окна кадра в качестве предпочтения пользователя, управление всплесками и т. д.

Любые новые фреймы, порожденные этим, также будут экземплярами этого подкласса JFrame. Единственное, что вам нужно запомнить, - это создать экземпляр вашего подкласса вместо JFrame. Я не думаю, что есть замена для запоминания этого, но по крайней мере сейчас это вопрос запоминания подкласса вместо вызова setIconImage (среди возможных других функций).

+0

Не идеален, но он работает. Должен быть способ сделать это для всех форм в приложении. Некоторые формы могут быть созданы сторонними инструментами и т. Д. – 2008-09-19 16:41:23

+0

Да, там * должен * быть способом, но солнце не предоставило его. Вероятно, это улучшает sev3 в bugparade где-то ... – 2008-09-19 17:43:29

0

Расширьте класс JDialog (например, назовите его MyDialog) и установите значок в конструкторе. Затем все диалоги должны расширить вашу реализацию (MyDialog).

1

Кроме того, если у вас есть одно «главное» окно и правильно установите его значок, пока вы используете это главное окно как «родительский» для любых классов Dialog, они наследуют значок. Тем не менее, для любых новых фреймов должен быть установлен значок на них.

как сказал Пол/Андреас, подкласс JFrame будет вашим лучшим выбором.

2

Существует еще один способ, но его больше «хак», то реальный исправить ....

Если вы распространяете JRE с вашим приложением, вы можете заменить значок чашки кофе ресурс в Java exe/dll/rt.jar, где бы это ни было, с вашим собственным значком. Это может быть не очень законно, но это возможно ...

Смежные вопросы