2012-08-31 264 views
6

當在我的應用程序中使用JMenuBar時,元素(如文件,編輯等)太靠近了,如果元素之間有一些空間,看起來會更好。這可能嗎?在JMenuBar中添加元素之間的間距

+1

如果您使用的是NetBeans嘗試右鍵單擊組件,並單擊周圍組件,如果你需要空間 –

+1

空間,然後嘗試menubar.add(新JPanel( ));它爲我工作。 –

回答

6

是的,就在它空的文本添加菜單欄項目,並使其不可點擊/可選擇

+2

謝謝你,這工作得很好PS。 .setClickable()和.setSelectable()不存在,而是對遇到同樣問題的人使用.setEnabled() – Andrei0427

5

對於橫向使用,你可以採取使用|

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

對於垂直使用您可以簡單地使用JSeparatoraddSeparator()

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

Separator

7

添加JComponents要求不focusable,您可以創建一個空間

  1. JMenuBar

    • JLabel(必須爲所需PreferredSize設置)

    • JSeparator(微小按蚊大小是10pixels,必須setOpaqueJSeparator

  2. JMenuItem

    (無需額外的設置)
    • JSeparator

    • JLabel(必須爲需要PreferredSize設置)

2

這是老了,但我一直在尋找任何解決同樣的問題 我出來這個:

你應該爲你的JMenuItem設置邊距,就像t他的:

JMenuItem menu = new JMenuItem("My Menu"); 
menu.setMargin(new Insets(10, 10, 10, 10)); 
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")); 
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);