Java Swing: Menu-Item mit Rand versehen

CPU

Lieutenant
Registriert
Jan. 2006
Beiträge
704
Hallo,

ich habe ein Problem mit Swing mit dem System-Look-And-Feel in Windows XP. Menüs werden nämlich so dargestellt:

und normal ist da noch ein kleiner Rand zwischen Selektion und Container. Doch wie bekommt man den Rand dahin (z.B. hier).

Bei meinen Recherchen bin ich auf diese Seite hier gestoßen. Sie beschäftigt sich mit den UIDefaults.

Einige habe ich schon ausprobiert, doch das Problem nicht beheben können. Hab ich etwas übersehen? Was würdet Ihr raten?

Danke vorab fürs lesen,
CPU :)
 
Hi,

da ich das Problem noch nie selbst bearbeitet habe, kann ich nur raten. Hast du's schon mit der setMargin-Methode versucht? Wird von AbstractButton geerbt:

setMargin

public void setMargin(Insets m)

Sets space for margin between the button's border and the label. Setting to null will cause the button to use the default margin. The button's default Border object will use this value to create the proper margin. However, if a non-default border is set on the button, it is that Border object's responsibility to create the appropriate margin space (else this property will effectively be ignored).

Parameters:
m - the space between the border and the label
 
Ja, hab ich schon. Dann wird zwar ein "Rand" geschaffen, aber die blaue Selektion umfasst dann den Rand mit, sodass sich einfach nur das Feld vergroßert und nicht der Abstand zwischen Selektion und Kontainer .... :(
 
Hast du mal ausprobiert, mit setBorder() aus JComponent zu arbeiten? Dazu musst du eventuell noch setBorderPainted() aus AbstractButton nutzen.
 
Hilft beides nichts! Es wird immer nur der gesamte Bereich vergrößert .... :(
 
Wenn es keine fertige Methode dafür gibt, dann müsste du die paint-Methoden von AbstractButton an der Stelle überschreiben, an der die Selektion gerendert wird. Eventuell findet das auch erst in den entsprechenden AWT-Oberklassen statt.
 
Zurück
Oben