Toon posts:

[Java] paint() opnieuw aanroepen na druk op knop

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een applet aan het schrijven dat mbv een numeriek model de banen van planeten berekent en weergeeft.
Het is nu grotendeels af, berkeningen worden uitgevoerd en de tekenprocedure loopt ook, alleen loop ik nu tegen het volgende probleem op: het tekenen gebeurt in de functie paint() maar ik wil dat het tekenen pas begint nadat op een start-knop wordt gedrukt, zodat je eerst nog de omstandigheden kan aanpassen. Alleen is de oproep van paint() natuurlijk al lang geweest als de gebruiker klaar is met configureren

Ik doe het nu zo:
1. Gebruiker configureert, drukt op "Run"
2. ActionListener voor "Run" checkt of de ingevoerde waardes kloppen en zet dan de variabele Calculate op true
3. In paint() zit een check ingebouwd die de simulatie laat beginnen als Calculate true is.

Dit werkt allemaal, met als nadeel dat ik altijd eerst een ander venster over het applet heen moet halen voordat de simulatie ook daadwerkelijk begint. Dat is natuurlijk niet echt handig / gebruikersvriendelijk dus wil ik het graag veranderen, maar tot nu toe is het niet gelukt.

Ik heb het volgende geprobeerd:
1. Maak een dialog die meteen weer verdwijnt zodat paint() weer wordt aangoepen - werkt, alleen wil die dialog niet automatisch verdwijnen, zodat de gebruiker twee keer moet klikken ipv de logische ene keer.
2. Plak een Panel over het teken-gebied heen en laat hem weer verdwijnen - gebeurt helemaal niks
3. Roep paint() aan met <hoofdpanel>.paint(Graphics g) - werkt niet, ik kan zelf geen nieuw Graphics-object maken

Weten jullie misschien nog andere manieren dan met een Dialog eroverheen gaan? Ik heb zo het idee dat dit stukken handiger moet kunnen, maar dit is mijn eerste Java-projectje en ik ben dus nog tamelijk n00b 8)7

  • sirdupre
  • Registratie: Maart 2002
  • Laatst online: 27-04-2025
er bestaat ook een methode genaamd "repaint()". Misschien heb je daar iets aan?

Verwijderd

Topicstarter
Doet precies wat ik nodig heb, dank je wel :)

Ik had wel bij Container gekeken in m'n Reference boek (waar dus geen repaint() bij stond) maar die Panel blijkt dus een Component te zijn 8)7

Nou ja, weer wat geleerd :)