2012-08-31 12 views
6

Elementos como Archivo, Edición, etc. están demasiado juntos al usar el JMenuBar en mi aplicación, se vería mucho mejor si hubiera espacio entre los elementos. es posible?Agregando espaciado entre elementos en JMenuBar

+1

si está utilizando NetBeans intente hacer clic derecho sobre el componente y haga clic en el espacio en torno componente –

+1

si necesita espacio a continuación, intente menubar.add (new JPanel ()); funcionó para mí. –

Respuesta

6

Sí, sólo añadir el artículo BarraDeMenús con texto vacío en ella y hacer que no se puede hacer clic/seleccionable

+2

Gracias, esto funcionó muy bien PS. .setClickable() y .setSelectable() no existen, en su lugar use .setEnabled() para las personas que enfrentan el mismo problema – Andrei0427

5

Para un uso horizontal que podía dar un uso |.

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

Para el uso vertical, es posible que sólo tiene que utilizar un JSeparatoroaddSeparator():

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

Separator

7

necesario para agregar JComponents que no son focusable, se puede crear un espacio para

  1. JMenuBar

    • JLabel (que establecer para requerido PreferredSize)

    • JSeparator (tamaño minimus es 10pixels, tienen que setOpaque para JSeparator)

  2. JMenuItem

    • JSeparator (no hay necesidad de ajuste adicional)

    • JLabel (tienen que establecer para requerido PreferredSize)

2

Es viejo, pero yo estaba buscando alguna solución para el mismo problema Y salí a esto:

Debe establecer los márgenes a su JMenuItem, como t su:

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

Hay un método estático en javax.swing.Box llamado createHorizontalStrut (int anchura) para crear un componente de ancho fijo invisible.

El código sería algo como esto:

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

Las otras respuestas funcionar bien, pero puede tener un espaciado entre inesperada debido al relleno y márgenes. Si desea tener más control sobre el tamaño de su espaciador:

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