Java setPressedIcon не работает

У меня есть меню в приложении, и я хочу установить значок нормального состояния пункта меню и значок нажатого состояния. Значок нормального состояния добавляется, но когда я нажимаю пункт меню, значок нормального состояния не изменяется при нажатии значка состояния. В чем здесь проблема:

        JMenu m=new JMenu(text);
        m.setBackground(getTheme().colors.menuColor());
        m.setOpaque(false);
        m.setIcon(core.getIcon(text, "normal"));
        m.setPressedIcon(core.getIcon("webmaps", "pressed"));

1 ответ

Решение

Эта проблема была замечена раньше. Унаследованный setPressedIcon не меняет фон Icon на JMenu (или действительно JMenuItem). Вы могли бы использовать MenuListener на компонент в качестве обходного пути:

m.addMenuListener(new MenuListener() {

    @Override
    public void menuSelected(MenuEvent e) {
        JMenu menu = (JMenu) e.getSource();
        menu.setIcon(core.getIcon("webmaps", "pressed"));
    }

    @Override
    public void menuDeselected(MenuEvent e) {
        JMenu menu = (JMenu) e.getSource();
        menu.setIcon(core.getIcon(text, "normal"));
    }

    @Override
    public void menuCanceled(MenuEvent e) {
        JMenu menu = (JMenu) e.getSource();
        menu.setIcon(core.getIcon(text, "normal"));
    }
});
Другие вопросы по тегам