/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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?


Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408188
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste