Java Swing JMenu的图标向右移动

时间:2016-05-12 06:30:25

标签: java swing jmenu

我在applet中的JMenu上添加了一个图标。当我运行applet时,图标显示正常。但是当通过浏览器访问它时,当这个applet加载到Web应用程序的portlet中时,图标会在JMenu中向右移动。

我为我的JMenus做了以下事情。 在initilize()中:

    setOpaque(false);
    setUI((MenuItemUI) BasicMenuUI.createUI(this));
    setContentAreaFilled(false);             
    setFocusPainted(false);
    setBorderPainted(false);
    setFont(UXStandards.MENU_TEXT_FONT);
    setForeground(UXStandards.MENU_TEXT_COLOR);     
    setLayout(new FlowLayout(FlowLayout.LEFT));
    setPreferredSize(new Dimension(80,70));

然后:

trnAnalysisImg = new   ImageIcon(ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("images/MainNav_Btn_TrnAnalysis.png")));

trnAnalysisPressedImg = new ImageIcon(ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("images/MainNav_Btn_TrnAnalysis_Pressed.png")));

terrainAnalysisMenu.setIcon(trnAnalysisImg);
terrainAnalysisMenu.setHorizontalAlignment(SwingConstants.CENTER );**//tried LEFT and RIGHT too, RIGHT works when I run applet but in browser there is no effect**

menubar.setLayout(new BoxLayout(menubar, 
            BoxLayout.LINE_AXIS)); 
menubar.add(fileMenu);
menubar.add(new RGWSeparator(SwingConstants.VERTICAL)); 
menubar.add(terrainAnalysisMenu);

terrainAnalysisMenu.addMenuListener(new MenuListener() {

        @Override
        public void menuSelected(MenuEvent e) {
            RGWMenu menu = (RGWMenu) e.getSource();
            menu.setIcon(trnAnalysisPressedImg);
        }

        @Override
        public void menuDeselected(MenuEvent e) {
            RGWMenu menu = (RGWMenu) e.getSource();
            menu.setIcon(trnAnalysisImg);
        }

        @Override
        public void menuCanceled(MenuEvent e) {
            RGWMenu menu = (RGWMenu) e.getSource();
            menu.setIcon(trnAnalysisImg);
        }       
    });

结果如下: Notice the shifted icon on the menu, which is revealing the background color

1 个答案:

答案 0 :(得分:0)

添加这个至少解决了我的问题:

terrainAnalysisMenu.setIconTextGap(0);

虽然我有一个没有文字的菜单,但仍然需要这个。