Используйте различные значки в JFrame и панели задач Windows



Есть ли способ использовать различные значки на JFrame и панели задач Windows?



Когда я устанавливаю JFrame.setIconImage (img) это же изображение используется в качестве иконки Windows. Можно ли использовать различные значки на панели задач JFrame и Windows?

591   3  

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

    Ничего не найдено.