Toon posts:

[java] swing paint

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ondervind véél problemen met het tekenen van eigen JPanel.

Sitatie:
hoofdklasse extends JFrame
--> heeft myJPanel

concreet:
in constructor van hoofdklasse:
Java:
1
2
3
4
5
6
7
8
//pnlMapFrontend = klasse die overerft van JPanel
pnlMapFrontend.setMap(new MapLoader().loadMap("maps/map1.xml"));
        pnlMapFrontend.setPreferredSize(new Dimension(500, 1000));
        pnlMapFrontend.setVisible(true);
        pnlMapFrontend.setEnabled(true);

        pnlMapFrontend.revalidate();
        c.add(pnlMapFrontend, BorderLayout.CENTER);


in de MapFrontend :

Java:
1
2
3
4
5
6
7
8
protected void paintComponent(Graphics g)
    {
        System.out.println("paint components");

        drawLayers();
        drawLines();

    }



probleem: hij tekent niet, alleen wanneer ik de frame resize, tekent hij alleen TIJDENS het resizen. Wanneer ik loslaat >> weg.

opmerking: paintChildren en painBorders heb ik geimplementeerd als leeg.

Ook wanneer mijn hoofdklasse opstart wordt er NIETS getekend, (andere Jpanels ook niet). Alleen wanneer ik voor de eerste keer resize pas. Daarna blijft het staan, behalve mijn MapFrontend dus.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Ik denk dat je de Graphics2D tutorial op java.sun.com eens door moet lezen (http://java.sun.com/docs/...ial/2d/display/index.html) daar zal het vast wel instaan.

"Beauty is the ultimate defence against complexity." David Gelernter


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 25-05 20:56
Ik kan er zo niet zo heel veel fouts aan ontdekken, maar ik zit niet heel erg in Swing. Misschien kun je er een compleet (maar beknopt!) voorbeeld van maken? Dan heb ik wat minder het idee dat ik wat mis.

Ik ben zelf van AWT gewend om gewoon de paint() methode te overriden voor componenten die geen containers zijn. Misschien zit 'm daar de kneep, maar ik kan daar niet echt argumenten voor aandragen.

  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Alle Swing componenten zijn lightweight en alle AWT componenten heavyweight. Wat dat precies betekend weet ik niet, maar wel dat het met het updaten te maken heeft.

"Beauty is the ultimate defence against complexity." David Gelernter


  • Robtimus
  • Registratie: November 2002
  • Laatst online: 15:28

Robtimus

me Robtimus no like you

Roep eens super.paintComponent(g) aan in je paintComponent method?

En in je paintChildren() en paintBorders ook even de super aanroepen.

[ Voor 36% gewijzigd door Robtimus op 27-04-2004 09:27 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • cenix
  • Registratie: September 2001
  • Laatst online: 25-05 17:24
IceManX heeft gelijk.

de methode moet met super.paintComponent(g); begonnen worden

Java:
1
2
3
public void paintComponent(Graphics g) {
  super.paintComponent(g); // verplicht de 1e regel!
}

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 15:28

Robtimus

me Robtimus no like you

Verplicht zou ik niet zeggen, maar tenzij je echt HEEEEEL goed weet wat je doet (dus AL het tekenwerk zelf doet, inclusief kinderen, borders, etc) is het wel een aanrader #1. Ik doe het zelf ook altijd.

More than meets the eye
There is no I in TEAM... but there is ME
system specs

Pagina: 1