Используйте разные значки в панели задач JFrame и Windows
Есть ли способ использовать разные значки на панели задач JFrame и Windows?
Когда я устанавливаю JFrame.setIconImage(img) это же изображение используется в качестве значка Windows. Могу ли я использовать разные значки для панели задач JFrame и Windows?
3 ответа
Я не могу использовать предложенные решения, потому что у меня есть JDK 1,5 в качестве требования...
Итак, я сделал это:
public void setAppIcons(JFrame frame) {
List<Image> images = new ArrayList<Image>();
images.add(getImage(MessageUtils.getString("application.images.icon.app.32")).getImage());
images.add(getImage(MessageUtils.getString("application.images.icon.app.16")).getImage());
try {
Class<?> [] types = {java.util.List.class};
Method method = Class.forName("java.awt.Window").getDeclaredMethod("setIconImages", types);
Object [] parameters = {images};
method.invoke(frame, parameters);
} catch (Exception e) {
frame.setIconImage(images.get(0));
}
}
Если клиент запускает приложение в версии 1.6 или выше, приложение выберет список изображений для установки...
ТКС за ваши предложения.
Эта работа в Windows 7 работает под управлением Java 7:
List<Image> icons = new ArrayList<Image>();
icons.add(new ImageIcon("16.png").getImage());
icons.add(new ImageIcon("32.png").getImage());
f.setIconImages(icons);
Иконки должны быть точно 16х16 и 32х32.
Вы можете использовать setIconImages(), чтобы предоставить список значков разных размеров. JRE выберет наилучший доступный размер для использования при каждом использовании (поэтому более детальная версия может быть показана, когда значок отображается в большем размере).
AFAIK нет запланированного способа показывать различные значки для определенных целей.
Вы можете использовать setUndecorated(true) и визуализировать декорации окон самостоятельно, но это нетривиально, чтобы сделать эту работу как задумано (из-за внешнего вида). Хакерское решение может заключаться в том, чтобы найти свой путь через одноранговые компоненты окна (с источником JDK + отражение во время выполнения) и предоставить другой значок одному или другому одноранговому компоненту. Опять же, это может потребовать кода, специфичного для активного L&F.