2012-08-31 13 views
6

Elementy takie jak Plik, Edycja itp. Są zbyt blisko siebie podczas korzystania z paska JMenuBar w mojej aplikacji, wyglądałoby znacznie ładniej, gdyby między nimi było trochę miejsca. czy to możliwe?Dodawanie odstępów między elementami w JMenuBar

+1

jeśli używasz NetBeans spróbuj kliknąć prawym przyciskiem myszy na elemencie i kliknij przestrzeń wokół składnika –

+1

jeśli potrzebujesz miejsca spróbuj menubar.add (nowa JPanel ()); to zadziałało dla mnie. –

Odpowiedz

6

Tak, wystarczy dodać element paska menu, z pustym tekstem w nim i sprawiają, że nie można kliknąć/wybierane

+2

Dziękuję, to zadziałało wygrywając PS. .setClickable() i .setSelectable() nie istnieją, zamiast tego użyj .setEnabled() dla osób, które napotykają ten sam problem – Andrei0427

5

Dla poziomego użycia można podjąć korzystania |.

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

Do użytku pionowego można po prostu użyć JSeparatorlubaddSeparator():

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

Separator

7

wymagane, aby dodać JComponents że nie są focusable, można stworzyć przestrzeń dla

  1. JMenuBar

    • JLabel (należy ustawić w wymaganej PreferredSize)

    • JSeparator (wielkość minimus jest 10pixels, muszą setOpaque do JSeparator)

  2. JMenuItem

    (wymagane żadne dodatkowe ustawienia)
    • JSeparator

    • JLabel (trzeba ustawić na wymaganym PreferredSize)

2

To stary, ale szukałem jakiegokolwiek rozwiązania tego samego problemu I doszedłem do tego:

Powinieneś ustawić marginesy do swojego JMenuItem, np. T jego:

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

Jest statyczna metoda na javax.swing.Box nazywa createHorizontalStrut (int szerokość), aby utworzyć niewidoczny element stałej szerokości.

kod będzie wyglądał tak:

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

innych odpowiedzi działają dobrze, ale może mieć nieoczekiwany odstępy powodu dopełnienia i marginesów. Jeśli chcesz mieć większą kontrolę rozmiaru spacer:

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