Swing Abgerundete JButtons

Kakulukiam21

Aktives Mitglied
Hallo Moin!

Ich habe hier ein lustiges Phänomen und zwar folgendes.

Meine Buttons sind alle fein brav erstellt, mit gefällt jedoch nicht das Eckige.

Was tut man da? Genau!

Java:
erscheinen = new JButton(erscheinungsbild)
erscheinen.setBounds(512, 379, 50, 50);
erscheinen.setBorder(BorderFactory.createLineBorder(Color.RED, 3, true)

Und schon sie die Ecken abgerundet. Denkt man.
Das ganze funktioniert nicht unter XP oder Linux.
Zumindest nicht bei mir. Andere Lösung?
 
LookAndFeel wechseln/schreiben, oder die Buttonhintergründe als Grafiken einbauen. Dann können sie aussehen, wie du das willst - auf jedem System.
 
Hm weiß meinst du mit LookandFeel?

Und als Grafiken einbauen ist mir auch schon in den Sinn gekommen aber ich hatte gehofft es gibt noch eine andere Lösung
 
Swing unterstützt so genannte Pluggable LookAndFeels. Also LookAndFeels, die man austauschen kann, um einer Anwendung ein ganz individuelles Aussehen geben zu können.
In den meisten Fällen werden die LAFs dann auch von den gängigen JREs auf anderen Betriebssystemen unterstützt.
Du kannst das ja mal ausprobieren. Setze folgende Zeilen in die main()-Methode, gleich als erste Anweisungen:
Java:
try {
  UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
  e.printStackTrace();
}

Dieser Codeschnipsel versieht deine Anwendung mit dem Aussehen deines Betriebssystems.
 
Mmn ist das auch eine Art Bug oder Fehlimplementierung vom Windows Look and Feel. Der Border des Buttons wird von der Windows UI mitgezeichnet, obwohl das die Aufgabe der paintBorder Methode wäre.
 
alternativ kannst du auch mal versuchen mit setOpaque(bool) die durchsichtigkeit zu ändern ... habe vor nicht mal 10min gelesen das sowas gerade bei "runden ecken" dafür sorgen kann da wohl der hintergrund des rechteckigen grundgerüsts über die runden ecken vom border durchscheint da diese durchsichtig sind *default bei swing* ... einfach mal mit rumspielen .. vllt hilfts
 
Ich bin grad noch dabei mit dem LookAndFeel am rumprobieren und habe da eigentlich eine gute Lösung gefunden 🙂

Ich habe jetzt einfach den "Nimbus" LookAndFeel installiert und schon habe ich wirklich abgerundete Ecken. Nur schimmert bei mir noch so ein leichtes Metallic-Blau an den Rändern durch, mit setBorderLine erreich ich da gar nix. Kann man die Farbe des LookAndFeels abändern? Wäre schön wenn es nicht Blau sondern Rot wäre 🙂
 

Zurück
Oben