Установить JMenu Margin не работает

Я создаю JMenuBar с некоторым JMenu и устанавливаю маржу в каждом JMenu. Но данный запас не работает в каждом JMenu. Как правильно установить Margin JMenu?

 import javax.swing.*;

 public class JMenuDemo extends JFrame {

     private JMenuBar bar;

     public JMenuDemo() {
         super("Menu example");
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         setVisible(true);

         initialize();
     }

     private void initialize() {
         bar = new JMenuBar();
         int menuHeight = 40;

         JMenu file = new JMenu("File");
         file.setPreferredSize(new java.awt.Dimension(50, menuHeight));
         file.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
         file.setMargin(new java.awt.Insets(0, 0, 20, 0));

         JMenuItem newItem = new JMenuItem("New");
         file.add(newItem);
         JMenuItem openItem = new JMenuItem("Open");
         file.add(openItem);
         bar.add(file);

         JMenu test = new JMenu("Test");
         test.setPreferredSize(new java.awt.Dimension(60, menuHeight));
         test.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
         test.setMargin(new java.awt.Insets(0, 0, 20, 0));
         bar.add(test);

         setJMenuBar(bar);

         getContentPane();
         setSize(400, 200);
     }

     public static void main(String[] args) {
         UIManager.getCrossPlatformLookAndFeelClassName(); 

         java.awt.EventQueue.invokeLater(new Runnable() {
             @Override
             public void run() {
                 new JMenuDemo();
             }
         });
     }
 }

person Scooby    schedule 20.02.2014    source источник
comment
JMenuBas использует BoxLayout, прочитайте учебник по Oracle ....   -  person mKorbel    schedule 20.02.2014
comment
Спасибо за повтор @mKorbel. Я имею в виду, как установить текстовое поле JMenu   -  person Scooby    schedule 20.02.2014


Ответы (1)


Для установки поля вы можете попробовать использовать html-код внутри вашего JMenu, например:

JMenu file = new JMenu("<html><p style='margin-bottom:20'>File");

введите здесь описание изображения

Также вы можете добавить EmptyBorder к вашему JMenu :

file.setBorder(BorderFactory.createCompoundBorder(file.getBorder(),BorderFactory.createEmptyBorder(0, 0, 20, 0)));
person alex2410    schedule 20.02.2014
comment
Как установить значок изображения и поле значка, если я добавлю значок в меню? Я пытался использовать html-код, но значок не отображается. JMenu jmenuFile = new JMenu(‹html›‹p style='margin-top:10'›‹img src='./images/kuser.png'/›File‹/p›‹/html›);. Папка с изображениями находится в папке src. - person Scooby; 20.02.2014
comment
В случае со значком попробуйте пример с EmptyBorder, это вам поможет. Для установки значка используйте следующий код file.setIcon(new ImageIcon(getClass().getResource("/images/kuser.png"))); - person alex2410; 20.02.2014
comment
Большое спасибо вам @alex2410. Ваш ответ и коды мне очень помогают. - person Scooby; 20.02.2014