在JMenuBar中添加元素之间的间距

时间:2012-08-31 09:10:26

标签: java swing jmenubar

在我的应用程序中使用JMenuBar时,文件,编辑等元素太靠近了,如果元素之间有一些空间,它看起来会更好。这可能吗?

7 个答案:

答案 0 :(得分:7)

要求添加不是JComponents的{​​{1}},您可以为

创建空间
  1. focusable

    • JMenuBar(必须设置为必需的JLabel

    • PreferredSize(最小尺寸为10像素,JSeparator必须为setOpaque

  2. JSeparator

    • JMenuItem(无需其他设置)

    • JSeparator(必须设置为必需的JLabel

答案 1 :(得分:6)

是的,只需添加带有空文字的MenuBar项目,并使其无法点击/选择

答案 2 :(得分:5)

对于横向使用,您可以使用|

menu.add(new JMenu("File"));
menu.add(new JMenu("|"));
menu.add(new JMenu("Edit"));

对于垂直使用,您可以使用JSeparator addSeparator()

menu.add(new JMenuItem("Close"));
menu.add(new JSeparator());        // explicit
menu.addSeparator();               // or implicit
menu.add(new JMenuItem("Exit"));

Separator

答案 3 :(得分:3)

它已经过时了,但我一直在寻找解决同一问题的方法 我出来了:

您应该为您的JMenuItem设置边距,如下所示:

JMenuItem menu = new JMenuItem("My Menu");
menu.setMargin(new Insets(10, 10, 10, 10));

答案 4 :(得分:1)

在javax.swing.Box上有一个名为createHorizo​​ntalStrut(int width)的静态方法,用于创建一个不可见的固定宽度组件。

代码看起来像这样:

JMenuBar menuBar = new JMenuBar();
menuBar.add( new JMenu( "File" ) );
menuBar.add( Box.createHorizontalStrut( 10 ) );  //this will add a 10 pixel space
menuBar.add( new JMenu( "Edit" ) );

答案 5 :(得分:0)

其他答案效果很好,但由于填充和边距可能会出现意外间距。如果您想更好地控制垫片的尺寸:

JMenu spacer = new JMenu();

//disable the spacer so that it doesn't behave
//like a menu item
spacer.setEnabled(false);

//Java components are weird. Set all three to
//guarantee that size is used
spacer.setMinimumSize(new Dimension(width, 1));
spacer.setPreferredSize(new Dimension(width, 1));
spacer.setMaximumSize(new Dimension(width, 1));

//add the spacer to your JMenuBar
jMenuBar.add(spacer);

答案 6 :(得分:0)

有两种标准方法可以为Swing组件添加任意间距。

一种标准方法是将setMargin用于JMenuBar对象中包含的JMenu对象。这就是GabrielCâmara在JMenuItem上面建议的方式。这应该也可以用于JMenu对象,但是我尝试了一下,但是没有用。

第二种标准方法是将EmptyBorder添加到JMenu对象。这完全正常。它使您可以完全控制各个方向上想要的确切距离。

JMenu jMenuFile = new JMenu("File")
jMenuFile.setBorder(new EmptyBorder(0, 10, 0, 10));