Как установить глобальный значок приложения в Swing?

StackOverflow https://stackoverflow.com/questions/103179

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Какие-либо предложения?

Это было полезно?

Решение

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

this.setIconImage(STANDARD_ICON);

Здесь вы также можете объединить другие стандартные функции, такие как запоминание показателей окна фрейма в качестве предпочтений пользователя, управление панелями-заставками и т. д.

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

Другие советы

Есть еще один способ, но это скорее «взлом», чем настоящее исправление....

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top