Используйте разные значки в панели задач 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.

Другие вопросы по тегам