2012-08-28 46 views
7

Estoy tratando de cambiar el borde de un JMenuBar con otro borde. Al igual que (por ejemplo):Cambiar un borde JMenuBar

De Image 1 http://img11.hostingpics.net/pics/696780Sanstitre.png Para Image 2 http://img11.hostingpics.net/pics/900299Sanstitre2.png

pero no puedo encontrar una manera de hacer eso. Puedo cambiar todo lo que quiera pero eso.

[editar] Ya he probado:

UIManager.put("Menu.border", BorderFactory.createLineBorder(Color.black, 1)); 
UIManager.put("MenuBar.border", BorderFactory.createLineBorder(Color.black, 1)); 
UIManager.put("MenuItem.border", BorderFactory.createLineBorder(Color.black, 1)); 

y ha trabajado no :(...

[/ editar]

Respuesta

11

Finalmente encontré exactamente lo que está buscando :) La propiedad correcta para el UIManager es PopupMenu.border. Para cambiar el borde de todo el menú emergente para un espesor de 4 píxeles y un color rojo (sólo un ejemplo divertido) que necesita la siguiente línea:

UIManager.put("PopupMenu.border", BorderFactory.createLineBorder(Color.red, 4)); 

Aquí hay un pequeño ejemplo:

import java.awt.Color; 
import javax.swing.*; 
import javax.swing.border.*; 

public class CustomPopupMenuBorder 
{ 
    public static void main(String[] args) 
    { 
     UIManager.put("PopupMenu.border", BorderFactory.createLineBorder(Color.black, 1));  
     JDialog myJDialog = new JDialog(); 
     myJDialog.setSize(450,300); 
     JMenuBar bar = new JMenuBar(); 
     JMenu menu = new JMenu("It's a me"); 
     JMenuItem item = new JMenuItem("JMenuItem 1"); 
     JMenuItem item2 = new JMenuItem("JMenuItem 2"); 
     menu.add(item); 
     JSeparator sep = new JSeparator();  
     menu.add(sep); 
     menu.add(item2); 
     bar.add(menu); 
     myJDialog.setJMenuBar(bar); 
     myJDialog.setVisible(true); 
    } 
} 

La mejor ayuda que tuve en mi viaje para conseguir esto es la aplicación java UIManager Defaults

+0

Muchas gracias :) – user1534422

2

Me gustaría empezar por mirar el javax.swing.border.Border class. Cada clase Swing que se extiende javax.swing.JComponent tiene un setBorder() method.

Sugiero encarecidamente que familiarizarse con el Java API documentation. Estas son una herramienta invaluable cuando estás programando en Java.

+0

Ya he comprobado el documento de Java a conciencia, pero gracias por el consejo;) Creo que voy a eliminar el borde de cada componente de Swing hasta que este borde desaparezca. – user1534422

Cuestiones relacionadas