2012-08-28 14 views
7

Ich versuche, den Rand einer JMenuBar mit einem anderen Rand zu ändern. So ist (zum Beispiel):Ändern eines JMenuBar-Rahmens

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

Aber ich kann nicht einen Weg, das zu tun finden. Ich kann alles ändern, was ich will, aber das.

[Bearbeiten] Ich habe bereits versucht:

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

und es hat nicht funktioniert :(...

[/ edit]

Antwort

11

Endlich fand ich eaxctly, was Sie suchen :) Die richtige Eigenschaft für den UIManager ist PopupMenu.border. So ändern Sie die Grenze des gesamten Popup-Menü mit einer Dicke von 4 Pixel und einer roten Farbe (nur ein lustiges Beispiel) müssen Sie die folgende Zeile:

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

Hier ist ein kleines Beispiel:

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

Die beste Hilfe, die ich auf meiner Reise hatte, ist die Java-Anwendung UIManager Defaults

+0

Vielen Dank :) – user1534422

2

ich durch einen Blick auf die beginnen würde javax.swing.border.Border class Jede Swing-Klasse, die erweitert javax.swing.JComponent hat eine setBorder() method.

Ich empfehle dringend, dass Sie Machen Sie sich mit dem Java API documentation vertraut. Diese sind ein unschätzbares Werkzeug, wenn Sie in Java programmieren.

+0

Ich habe bereits den java doc gewissenhaft überprüft, aber danke für den Rat;) Ich denke, ich werde die Grenze von jeder Komponente von Swing entfernen bis diese Grenze verschwindet. – user1534422