Используйте различные значки в JFrame и панели задач Windows
Есть ли способ использовать различные значки на JFrame и панели задач Windows?
Когда я устанавливаю JFrame.setIconImage (img) это же изображение используется в качестве иконки Windows. Можно ли использовать различные значки на панели задач JFrame и Windows?
3 ответов:
Эта работа в 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);Значки должны бытьточно 16x16 и 32x32.
Вы можете использовать setIconImages (), чтобы предоставить список значков разных размеров. JRE выберет наилучший доступный размер для каждого использования (поэтому более детальная версия может быть показана, когда значок отображается в большем размере).
AFAIK нет запланированного способа отображения различных иконок для конкретного использования.
Вы можете использовать setUndecorated (true) и визуализировать украшения окон самостоятельно, но нетривиально сделать эту работу, как задумано (из-за внешнего вида и ощущения). В "сокс" решение может заключаться в том, чтобы найти свой путь через одноранговые компоненты окна (с источником JDK + отражением во время выполнения) и предоставить другой значок одному или другому одноранговому компоненту. Опять же, для этого может потребоваться код, специфичный для активного L&F.
Я не могу использовать предложенные решения, потому что у меня есть 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)); } }Если клиент запускает приложение в jre 1.6 или major, приложение выберет список изображений для установки ...
Tks для ваших предложений.
Comments