homebeaver / SwingSet

try to complete SwingSet3 org.swinglabs.swingx jars 1.6.6 for java 8 and openjdk 17 (Temurin)
GNU Lesser General Public License v2.1
0 stars 0 forks source link

SwingSet2 : ButtonDemo lines in background when PaintBorder deselected #18

Closed homebeaver closed 2 years ago

homebeaver commented 2 years ago

grafik

homebeaver commented 2 years ago

das scheint am Text parameter zu liegen:

new JButton("<html><font size=2>One</font></html>")

Beim dritten Button kommt der Text aus den props und ist html, aber mit Fehler bei bold:

ButtonDemo.button3=<html><font size=2 color=red><bold>Three!</font></html>
homebeaver commented 2 years ago

Nein, hat nichts mit Text parameter zu tun.

Es hat mit button border zu tun! Per default sind die button border CompoundBorder. Diese bestehen aus zwei Teilen

Border bd = button.getBorder();
if(bd instanceof BorderUIResource.CompoundBorderUIResource) {
  BorderUIResource.CompoundBorderUIResource cb = (BorderUIResource.CompoundBorderUIResource)bd;
  LOG.info("InsideBorder:"+cb.getInsideBorder() + ", OutsideBorder:"+cb.getOutsideBorder());

...
InsideBorder:javax.swing.plaf.basic.BasicBorders$MarginBorder@56f4468b, 
OutsideBorder:javax.swing.plaf.metal.MetalBorders$ButtonBorder@6cc4c815

Wird bei dieser Konstellation border paint ausgeschaltet button.setBorderPainted(false);, so wird der freigelassene Platz Insets margin nicht "bemalt": paint()-Methode.

Abhilfe: man kann die Klassen patchen. Das werde ich implementieren

homebeaver commented 2 years ago

In https://github.com/homebeaver/SwingSet2-demos/releases/tag/v1.2 gelöst. ABER nicht gut genug.