【问题标题】:Set JMenu Margin not working设置 JMenu 边距不起作用
【发布时间】:2014-02-20 09:32:04
【问题描述】:

我正在创建一个带有一些 JMenu 的 JMenuBar,并在每个 JMenu 中设置边距。但是给定的边距在每个 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();
             }
         });
     }
 }

【问题讨论】:

  • JMenuBas 使用 BoxLayout,阅读 Oracle 教程 ....
  • 感谢您的重播@mKorbel。我的意思是如何设置JMenu的文本边距

标签: java swing jmenu jmenubar preferredsize


【解决方案1】:

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

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

【讨论】:

  • 如果我在菜单中添加图标,如何设置图像图标和图标边距?我尝试使用 html 代码,但图标未显示。 JMenu jmenuFile = new JMenu("

    文件

    ");. “images”文件夹位于“src”文件夹中。
  • EmptyBorder的图标试试例子,对你有帮助。设置图标使用下一个代码file.setIcon(new ImageIcon(getClass().getResource("/images/kuser.png")));
  • 非常感谢@alex2410。您的回答和代码对我帮助很大。
猜你喜欢
  • 1970-01-01
  • 2013-09-02
  • 2018-11-30
  • 2018-03-23
  • 2017-01-17
  • 2021-12-20
  • 2021-01-18
  • 2013-01-09
  • 1970-01-01
相关资源
最近更新 更多