[java]ActionListener blijft focus houden ipv de loop

Pagina: 1
Acties:
  • 118 views sinds 30-01-2008
  • Reageer

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 09:05

Mrlten

Premium Deluxe Plus

Topicstarter
Hallo iedereen, ik kon helaas geen betere titel verzinnen maar ik probeer het zo goed mogelijk uit te leggen:
class Hoofdscherm heeft een ActionListener en maakt een JDesktopPane aan en daar komt mijn class SimulatorView op te staan. Ook zitten er een paar testknopjes als een JMenuBar toegevoegt aan de JDesktopPane. In het hoofdscherm zit een methode die de SimulatorView via een for lus moet laten lopen, het belangrijkste stukje code daarbij is view.showStatus(step, field); (het hele spul wordt gedrawt als image) die elke keer weer wordt uitgevoerd.
Nu is het probleem dat als ik op een knop in het hoofdscherm druk, dat de knop geselecteerd blijft, de for lus wel gaat lopen en pas als de for lus beeindigd is de SimulatorView wel wordt geupdate. Ik zie dus terwijl ik op de knop druk niets veranderen in de SimulatorView. Als ik via BlueJ zelf (daar werk ik mee) de methode ga aanroepen doet hij het wel perfect!

Hoe kan ik er voor zorgen dat als ik de knop indruk dat dan meteen de knop actie klaar is maar wel de for lus wordt aangeroepen?

ps. ik ben redelijk newbie op GUI gebied in java :)

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Moet je geen threads gebruiken om zoiets netjes op te lossen (just a quess).

www.fendt.com | Nikon D7100 | PS5


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

If my memory serves me right (threads is idd de oplossing)
code:
1
2
3
4
5
Runnable r = new Runnable(){
    void run(){... dikke teken acties ... }
}

SwingUtilities.invokeLater(r);

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 09:05

Mrlten

Premium Deluxe Plus

Topicstarter
FendtVario schreef op donderdag 31 maart 2005 @ 23:25:
Moet je geen threads gebruiken om zoiets netjes op te lossen (just a quess).
Daar heb ik ook nog nooit mee gewerkt, hopelijk is er wat te vinden op internet. Van welke klasse of methode moet ik dan een thread maken?


Alarmnummer: mijn java kennis is nog niet zo heel erg groot, waar moet ik die code neer gaan zetten en wat moet er worden geimporteerd? :'(

[ Voor 19% gewijzigd door Mrlten op 31-03-2005 23:32 ]


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Kijk eens in de java tutorial of in een boek ;)

www.fendt.com | Nikon D7100 | PS5


  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 09:05

Mrlten

Premium Deluxe Plus

Topicstarter
Bedankt voor die link, ik ga dat eens proberen :9
In het BlueJ boek dat ik gebruik staat niets in over threads, zover gaat het boek niet :r

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 09:05

Mrlten

Premium Deluxe Plus

Topicstarter
Oke, ik heb nu iedergeval een public static void main(String[] args) { ... } methode aangemaakt, zoals in de tutorial staat. Verder begrijp ik eigenlijk niet zoveel van die tutorial :/
Kan iemand mij misschien uitleggen wat ik in de public void actionPerformed(ActionEvent e) moet zetten om er voor te zorgen dat de methode simulate (de methode waarin de for loop staat) wel gaat updaten?

Natuurlijk kunnen jullie niet zomaar gaan gokken hoe het wel moet, daarom heb ik het BlueJ project even online gezet op deze plek.
Het gaat om de methode simulate(int numSteps) te vinden in het Hoofdscherm die de SimulatorView view moet gaan updaten. De methode staat bijna helemaal onderaan. Je moet pas de methode simulator gaan gebruiken nadat je op de knop Start hebt gedrukt, om 1 of andere reden kon ik dat niet omzeilen zonder een mooie nullpointer error te krijgen.
Ik verwacht natuurlijk niet dat jullie alles zo even voor mij gaan maken, ik wil zelf ook nog wat te doen hebben hè :P

Maarten.
Pagina: 1