2013-02-22 58 views
0

我在我的應用程序中有菜單,我想設置菜單項正常狀態圖標,並按下狀態圖標。正常狀態圖標被添加,但是當我按菜單項時,正常狀態圖標不會被按下狀態圖標改變。這裏有什麼問題: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

此問題已被seen before。繼承的setPressedIcon不會更改JMenu(或實際上JMenuItem)上的背景Icon。您可以在組件上使用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")); 
    } 
});