Avatar billede Slettet bruger
15. december 2008 - 13:02 Der er 2 kommentarer og
1 løsning

Tegne på modificeret JPanel

Hej eksperter,

Jeg har her en modificeret JPanel-klasse:


package CircularPies;

import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;

public class PaintSurface extends JPanel
{
    public void paintComponent(Graphics g)
    {
        super.paintComponents(g);
        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON
        );
       
        g2.setColor(Color.BLACK);
        g2.drawLine(100, 100, 200, 200);
       
        this.setSize(300, 300);
        this.setBackground(Color.WHITE);
    }
}


Den skulle meget gerne få en hvid baggrund og tegne en streg, når jeg anvender følgende kode:


private PaintSurface PaintSurface_Drawing = new PaintSurface();
Panel_Drawing.add(PaintSurface_Drawing);


Ovenstående er taget ud af et større sammenhæng, så jeg har et PaintSurface-panel, PaintSurface, i et almindeligt panel i et overordnet content-panel (to sidstnævnte er ikke modificerede).

Der dukker ikke nogen hvid baggrund eller streg op. Hvad er der galt?
Avatar billede gedfrik Nybegynder
14. januar 2009 - 23:56 #1
Størrelsen skal du definere et andet sted - der er ingen grund til at gøre det ved hvert kald til paintComponent. Du kan F.eks. gøre det i constructoren. (Jeg ville bruge setPreferredSize(Dimension d)).
I stedet for this.setBackground(), så tegn din baggrund direkte:

g2.setColor(Color.WHITE);
g2.fillRect(0,0,getWidth(),getHeight());

I øvrigt skal du kalde super.paintComponent(g) i stedet for super.paintComponents(g). Det er selve superklassen der skal tegnes, og ikke dens sub-komponenter.
Avatar billede Slettet bruger
15. januar 2009 - 07:33 #2
Hov... Egentlig er spørgsmålet forældet nu - men skidt da med det :) Tak!
Avatar billede gedfrik Nybegynder
15. januar 2009 - 11:34 #3
Ja, det havde jeg også lidt på fornemmelsen... Men det kunne jo være du stadig sad fast :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester