Elementi come File, Modifica ecc. Sono troppo vicini tra loro quando si utilizza JMenuBar nella mia applicazione, sarebbe molto più bello se ci fosse dello spazio tra gli elementi. È possibile?Aggiunta di spaziatura tra elementi in JMenuBar
risposta
Sì, basta aggiungere oggetto MenuBar con testo vuoto in esso e lo rendono non cliccabile/selezionabile
Grazie, questo ha funzionato senza sosta PS. .setClickable() e .setSelectable() non esistono, invece usa .setEnabled() per le persone che incontrano lo stesso problema – Andrei0427
Per un impiego orizzontale si poteva prendere un uso |
.
menu.add(new JMenu("File"));
menu.add(new JMenu("|"));
menu.add(new JMenu("Edit"));
Per l'utilizzo in verticale si potrebbe usare semplicemente un JSeparator
oaddSeparator()
:
menu.add(new JMenuItem("Close"));
menu.add(new JSeparator()); // explicit
menu.addSeparator(); // or implicit
menu.add(new JMenuItem("Exit"));
necessario aggiungere JComponents
che non sono focusable
, è possibile creare uno spazio per
JMenuBar
JLabel
(necessario impostare per richiestoPreferredSize
)JSeparator
(dimensione minimus è 10pixels, devonosetOpaque
perJSeparator
)
JMenuItem
JSeparator
(senza ulteriori impostazioni necessarie)JLabel
(devono impostare per richiestePreferredSize
)
E 'vecchio, ma mi era alla ricerca di una soluzione per lo stesso problema E sono venuto a questo:
È necessario impostare i margini sul proprio JMenuItem, come t la sua:
JMenuItem menu = new JMenuItem("My Menu");
menu.setMargin(new Insets(10, 10, 10, 10));
C'è un metodo statico su javax.swing.Box chiamato createHorizontalStrut (int width) per creare un componente a larghezza fissa invisibile.
Il codice dovrebbe essere simile a questa:
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"));
Le altre risposte funzionare bene, ma possono avere una spaziatura fra inaspettato a causa di imbottitura e margini. Se si vuole avere un maggiore controllo delle dimensioni del vostro 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);
se si sta utilizzando NetBeans provare a fare clic destro sul componente e fare clic su spazio intorno componente –
se avete bisogno di spazio quindi provare menubar.add (nuove JPanel ()); ha funzionato per me –