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
Odpowiedz
Tak, wystarczy dodać element paska menu, z pustym tekstem w nim i sprawiają, że nie można kliknąć/wybierane
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
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ć JSeparator
lubaddSeparator()
:
menu.add(new JMenuItem("Close"));
menu.add(new JSeparator()); // explicit
menu.addSeparator(); // or implicit
menu.add(new JMenuItem("Exit"));
wymagane, aby dodać JComponents
że nie są focusable
, można stworzyć przestrzeń dla
JMenuBar
JLabel
(należy ustawić w wymaganejPreferredSize
)JSeparator
(wielkość minimus jest 10pixels, musząsetOpaque
doJSeparator
)
(wymagane żadne dodatkowe ustawienia)JMenuItem
JSeparator
JLabel
(trzeba ustawić na wymaganymPreferredSize
)
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));
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"));
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);
jeśli używasz NetBeans spróbuj kliknąć prawym przyciskiem myszy na elemencie i kliknij przestrzeń wokół składnika –
jeśli potrzebujesz miejsca spróbuj menubar.add (nowa JPanel ()); to zadziałało dla mnie. –