我在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);
}
});
答案 0 :(得分:0)
添加这个至少解决了我的问题:
terrainAnalysisMenu.setIconTextGap(0);
虽然我有一个没有文字的菜单,但仍然需要这个。