Java 在JMenuBar中添加元素之间的间距
在我的应用程序中使用JMenuBar时,File、Edit等元素靠得太近,如果元素之间有一些空间,看起来会更好。这可能吗 是的,只需添加带有空文本的菜单栏项,并使其不可单击/选择对于水平使用,您可以使用Java 在JMenuBar中添加元素之间的间距,java,swing,jmenubar,Java,Swing,Jmenubar,在我的应用程序中使用JMenuBar时,File、Edit等元素靠得太近,如果元素之间有一些空间,看起来会更好。这可能吗 是的,只需添加带有空文本的菜单栏项,并使其不可单击/选择对于水平使用,您可以使用 menu.add(new JMenu("File")); menu.add(new JMenu("|")); menu.add(new JMenu("Edit")); 对于垂直使用,您可以简单地使用jsepator或addSeparator(): 需要添加不可聚焦的组件时,您可以为 JMenu
menu.add(new JMenu("File"));
menu.add(new JMenu("|"));
menu.add(new JMenu("Edit"));
对于垂直使用,您可以简单地使用jsepator
或addSeparator()
:
需要添加不可聚焦的
组件时,您可以为
JMenuBar
JLabel
(必须设置为所需的PreferredSize
)
jsepator
(最小尺寸为10像素,对于jsepator
,必须setOpaque
)
JMenuItem
jsepator
(无需其他设置)
JLabel
(必须设置为所需的PreferredSize
)
它很旧,但我一直在寻找解决同样问题的方法
我得出结论:
您应该为您的项目设置边距,如下所示:
JMenuItem menu = new JMenuItem("My Menu");
menu.setMargin(new Insets(10, 10, 10, 10));
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" ) );
javax.swing.Box上有一个名为createHorizontalstrop(int-width)的静态方法来创建一个不可见的固定宽度组件
代码如下所示:
JMenuItem menu = new JMenuItem("My Menu");
menu.setMargin(new Insets(10, 10, 10, 10));
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" ) );
其他答案效果很好,但由于填充和边距,可能会出现意外的间距。如果您想更好地控制垫片的尺寸:
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);
有两种标准方法可以向Swing组件添加任意间距
一种标准方法是对JMenuBar对象中包含的JMenu对象使用setMargin。这是加布里埃尔·卡马拉(Gabriel Cámara)在上述für jmenu项目中建议的方式。这应该也适用于für JMenu对象,但我试过了,但没有成功
第二种标准方法是向JMenu对象添加EmptyBorder。这完全行得通。它为您提供了在各个方向上想要的精确距离的完全控制
JMenu jMenuFile = new JMenu("File")
jMenuFile.setBorder(new EmptyBorder(0, 10, 0, 10));
如果您使用的是netbeans,请右键单击组件并单击组件周围的空格。如果您需要空格,请尝试menubar.add(new JPanel());它对我很有效。谢谢,这非常有效。PS..setClickable()和.setSelectable()不存在,请使用.setEnabled()为遇到相同问题的人提供迄今为止最好的解决方案。