[Java] Paint op een JPanel wil niet meewerken

Pagina: 1
Acties:

  • CU2morO
  • Registratie: September 2001
  • Laatst online: 31-01 20:32
Voor een projectje dient er het volgende te gebeuren: Op een LayeredPane staan verschillende componenten. De achterste is een achtergrond op een JPanel (een plaatje) en op de voorgrond ook een JPanel waar verschillende lijnen op gedrawed moeten worden.
Nu zit het zo dat er in de klasse waar deze panels zich bevinden er een methode is 'drawNetworkLine(startX, startY, endX, endY)' die een lijn met de 2 meegegeven coordinaten moet tekenen op de JPanel die op de voorgrond staat in de LayeredPane.
Vanuit een onderliggende klasse wordt deze drawNetworkLine een aantal keer aangesproken met de juiste hoekpunten uit een list, dat werkt verder allemaal prima.
Waar het probleem nu komt kijken is dat het niet duidelijk is, waar nu precies gedrawed moet worden. De bedoeling is dat het op het JPanel komt, maar hoe zorg ik ervoor dat ik vanuit de klasse waarop dit component zich bevind, direct de paint kan aanspreken en deze lijnen tekenen?
Hoe het er nu voorstaat, is de lijnen worden 1x heel snel getekent bij het initialiseren, maar daarna valt meteen de achtergrond er overheen. (De achtergrond staat duidelijk als lagere prioriteit in de LayeredPane dan de voorgrond).

Weet iemand mischien een oplossing om te zorgen dat ik op een LayeredPane, op een JPanel een aantal lijnen kan zetten vanuit de klasse waarop het component zich bevind? En dan ook nog zodat de repaint functie de juiste opdrachten 'repaint'.

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

wat je moet doen is in de afgeleide klasse van het JPanel waarin je tekent de lijnen opslaan die getekend moeten worden.
Je schrijft dan methodes om lijnen toe te voegen.

in de paint() methode schrijf je dan de opdrachten om de lijnen te tekenen op het scherm.
in de drawNetworkLine() methode voeg je de lijn toe aan je lijstje en roep je invalidate() aan.

automatisch zal het probleem van verdwijnende tekeningen gedaan zijn.

ASSUME makes an ASS out of U and ME


  • The Fox NL
  • Registratie: Oktober 2004
  • Laatst online: 21-04 09:27
Zoals Highguy zegt, een nieuwe klasse maken die JPanel extend. Daar moet je de methode paintComponent moet overriden. In die methode doe je eerst super.paintComponent en daarna roep je je eigen tekenroutines aan.