Как мне установить значок приложения глобально в Swing? - PullRequest
9 голосов
/ 19 сентября 2008

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

Есть предложения?

Ответы [ 4 ]

9 голосов
/ 19 сентября 2008

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

this.setIconImage(STANDARD_ICON);

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

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

2 голосов
/ 19 сентября 2008

Есть другой способ, но это скорее "взлом", чем реальное исправление ....

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

1 голос
/ 19 сентября 2008

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

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

0 голосов
/ 19 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...