2012-08-28 13 views
7

Sto tentando di modificare il bordo di una JMenuBar con un altro bordo. Come quella (per esempio):Modifica di un bordo JMenuBar

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

ma non riesco a trovare un modo per farlo. Posso cambiare tutto ciò che voglio ma quello.

[modifica] ho già provato:

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

e sta non lavorato :(...

[/ modifica]

risposta

11

Infine ho trovato esattamente quello che stai cercando :) La proprietà corretta per UIManager è PopupMenu.border. Per modificare il bordo di tutto il menu a comparsa per uno spessore di 4 pixel e un colore rosso (solo un esempio divertente) è necessario il seguente riga:

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

Ecco un piccolo esempio:

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

Il miglior aiuto che ho avuto durante il mio viaggio per ottenere questa è l'applicazione java UIManager Defaults

+0

Grazie mille :) – user1534422

2

Vorrei iniziare a guardare la javax.swing.border.Border class. Ogni classe Swing che estende ha un setBorder() method.

Ti consiglio caldamente di familiarizzare con lo Java API documentation. Questi sono uno strumento inestimabile quando si programma in Java.

+0

Ho già controllato coscienziosamente il documento java, ma grazie per il consiglio;) Penso che eliminerò il bordo di ogni componente di Swing fino a quando questo confine sparirà. – user1534422

Problemi correlati