|
| Hvem tegner indholdet af en JInternalFrame~ Fra : Barsum |
Dato : 13-10-03 22:37 |
|
Det her er øjensynligt et svært spørgsmål, eller også er det dårligt
formuleret, i hvert fald har der ikke været meget hjælp at hente på
comp.lang.java.gui - men hvem ved om der sidder en Swing ekspert og
kigger med her.... :)
Jeg kunne godt tænke mig at lave mit eget look and feel på en
JInternalFrame. Derfor installere jeg min egen nedarvning af
BasicInternalFrameUI.
Nu ville jeg forvente at kunne tegne indholdet af JInternalFrame ved
at override BasicInternalFrameUI.paint:
public void paint(Graphics g, JComponent c) {
g.setColor(Color.black);
g.fillRoundRect(0,0, c.getWidth(),c.getHeight(),10,10);
}
Men det viser ikke noget på framen. Det lader til at componenten
bliver udfyldt med baggrundsfarven EFTER paint(Graphics g, JComponent
c) er blevet kaldt.
Hvis jeg derimod overrider JInternalFrame.paint :
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.blue);
g.fillRoundRect(0,0, getWidth(), getHeight(),10,10);
}
Så får jeg et fint blåt rektangle i min JInternalFrame. Men det er jo
ikke særlig pluggable look&feel? Da det er kodet i selve komponenten.
Hvordan gør man det på den rigtige måde?
| |
Barsum (14-10-2003)
| Kommentar Fra : Barsum |
Dato : 14-10-03 00:13 |
|
Næh det var alligevel ikke så svært...
Barsums første regel:
Så snart du har postet på usenet går lyset op for dig.
Det er InternalFrame's JRootPane som lægger sig oven på alt andet, og
derfor det som skal erstattes.
hmmm...
On Mon, 13 Oct 2003 23:36:35 +0200, Barsum <droida38@yahoo.com> wrote:
>Det her er øjensynligt et svært spørgsmål, eller også er det dårligt
>formuleret, i hvert fald har der ikke været meget hjælp at hente på
>comp.lang.java.gui - men hvem ved om der sidder en Swing ekspert og
>kigger med her.... :)
>
>Jeg kunne godt tænke mig at lave mit eget look and feel på en
>JInternalFrame. Derfor installere jeg min egen nedarvning af
>BasicInternalFrameUI.
>
>Nu ville jeg forvente at kunne tegne indholdet af JInternalFrame ved
>at override BasicInternalFrameUI.paint:
>
>public void paint(Graphics g, JComponent c) {
> g.setColor(Color.black);
> g.fillRoundRect(0,0, c.getWidth(),c.getHeight(),10,10);
>}
>
>Men det viser ikke noget på framen. Det lader til at componenten
>bliver udfyldt med baggrundsfarven EFTER paint(Graphics g, JComponent
>c) er blevet kaldt.
>
>Hvis jeg derimod overrider JInternalFrame.paint :
>
>public void paint(Graphics g) {
> super.paint(g);
> g.setColor(Color.blue);
> g.fillRoundRect(0,0, getWidth(), getHeight(),10,10);
>}
>
>Så får jeg et fint blåt rektangle i min JInternalFrame. Men det er jo
>ikke særlig pluggable look&feel? Da det er kodet i selve komponenten.
>
>Hvordan gør man det på den rigtige måde?
| |
|
|