在我的应用程序中使用JMenuBar时,文件,编辑等元素太靠近了,如果元素之间有一些空间,它看起来会更好。这可能吗?
答案 0 :(得分:7)
要求添加不是JComponents
的{{1}},您可以为
focusable
JMenuBar
(必须设置为必需的JLabel
)
PreferredSize
(最小尺寸为10像素,JSeparator
必须为setOpaque
)
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"));
答案 3 :(得分:3)
它已经过时了,但我一直在寻找解决同一问题的方法 我出来了:
您应该为您的JMenuItem设置边距,如下所示:
JMenuItem menu = new JMenuItem("My Menu");
menu.setMargin(new Insets(10, 10, 10, 10));
答案 4 :(得分:1)
在javax.swing.Box上有一个名为createHorizontalStrut(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));