2012-08-31 20 views
6

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

+1

se si sta utilizzando NetBeans provare a fare clic destro sul componente e fare clic su spazio intorno componente –

+1

se avete bisogno di spazio quindi provare menubar.add (nuove JPanel ()); ha funzionato per me –

risposta

6

Sì, basta aggiungere oggetto MenuBar con testo vuoto in esso e lo rendono non cliccabile/selezionabile

+2

Grazie, questo ha funzionato senza sosta PS. .setClickable() e .setSelectable() non esistono, invece usa .setEnabled() per le persone che incontrano lo stesso problema – Andrei0427

5

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 JSeparatoroaddSeparator():

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

Separator

7

necessario aggiungere JComponents che non sono focusable, è possibile creare uno spazio per

  1. JMenuBar

    • JLabel (necessario impostare per richiesto PreferredSize)

    • JSeparator (dimensione minimus è 10pixels, devono setOpaque per JSeparator)

  2. JMenuItem

    • JSeparator (senza ulteriori impostazioni necessarie)

    • JLabel (devono impostare per richieste PreferredSize)

2

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

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

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