2016-05-12 5 views
-1

Я добавляю значок в свой JMenu, который находится в апплете. Когда я запускаю апплет, значок отображается в полном порядке. Но при доступе к нему через браузер, когда этот апплет загружается в портлете в веб-приложении, значок смещается вправо в JMenu.Значок Java Swing 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

'setPreferredSize (новое измерение (80,70));' 1) См. [Следует ли избегать использования методов метода Set (Preferred | Maximum | Minimum) в Java Swing?] (Http://stackoverflow.com/ q/7229226/418556) (Да.) 2) Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 3) Чтобы получить более эффективную помощь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –

+0

Я попытался использовать setSize(), значок теперь оставляет равные пробелы с обоих концов меню, хотя оба меню и значок имеют одинаковый размер. – Shariq

+0

Я подумаю больше об этом, увидев MCVE. (У меня нет первой подсказки, почему вы ее используете, но MCVE должен объяснить.) –

ответ

0

Добавление этого решить мою проблему, по крайней мере:

terrainAnalysisMenu.setIconTextGap(0); 

Хотя я было меню без текста, но ему это нужно.

 Смежные вопросы

  • Нет связанных вопросов^_^