java - 设置 JMenu 边距不起作用

标签 java swing jmenu jmenubar preferredsize

我正在创建一个带有一些 JMenu 的 JMenuBar 并在每个 JMenu 中设置边距。但是给定的 margin 在每个 JMenu 中都不起作用。如何正确设置JMenu的Margin?

 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();
             }
         });
     }
 }

最佳答案

要设置边距,您可以尝试在 JMenu 中使用 html 代码,例如:

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

enter image description here

您还可以将 EmptyBorder 添加到您的 JMenu 中:

file.setBorder(BorderFactory.createCompoundBorder(file.getBorder(),BorderFactory.createEmptyBorder(0, 0, 20, 0)));

关于java - 设置 JMenu 边距不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21903605/

相关文章:

java - 尝试重构得更好

java - SPRING MVC - 拒绝 bean 名称 'SVGParser' : no URL paths identified

java - TimerTask 的问题

java - 在 JMenu 中自动添加 JMenuItem

java - 如何防止 JCheckBoxMenuItem 单击后关闭?

java - 如何将Word文档转换为PDF?

java - 重用对象的最佳方式

java - 更新gui中的Jtable内容而不重新启动重绘表格的方法?

java - 在 Swing Java Netbeans 中的 JTextField 上设置图像