Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[java] showMessageDialog laat applicatie vastlopen

Pagina: 1
Acties:

  • DocB
  • Registratie: September 2001
  • Laatst online: 03-11 12:22
Ik schrijf in java een programma, en ik ga nu de mist in met een simpele dialog. De volgende code:
code:
1
JOptionPane.showMessageDialog(this, "You have completed the game!");

zorgt ervoor dat ik een klein schermpje krijg, maar zonder de text of knoppen. Ik krijg het schermpje ook niet weg met het kruisje, en omdat het ding modal is reageert de hele applicatie niet meer.

Ik krijg geen exceptions, en dat maakt het lastig om hier iets over te vinden op google of GoT. Ik ben wel ergens een topic tegen gekomen met een zelfde probleem, maar dat ging over java 1.4.2, en daar werd ook geen oplossing of workaround aangedragen.

Het vreemde is dat ik ergens anders in het programma ook een keer hetzelfde doe, maar daar is er geen enkel probleem en werkt het naar behoren. Ik heb de code van dat stukje gekopieerd om er zeker van te zijn dat het echt hetzelfde is, maar zonder resultaat.

Ik werk zelf met netbeans op OS x (dus java 1.5), maar ook op de nieuwere java versies gaat het mis.

Ik hoop dat ik voldoende informatie heb gegeven, en dat iemand me hiermee verder kan helpen...

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 00:12

NetForce1

(inspiratie == 0) -> true

Je moet er voor zorgen dat alle code die met Swing/AWT werkt op de EDT (Event Dispatch Thread) uitgevoerd word, anders kun je dit soort problemen verwachten. Hiervoor zijn enkele methoden in de klasse SwingUtilities beschikbaar, als in bepaalde operaties veel wisselwerking hebt tussen applicatie-logica en ui (bijv. status-updates naar het scherm schrijven) kun je SwingWorker gebruiken.

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Kan het zijn dat de aanroepende klasse (this) een klein scherm-element is? Probeer het eens met null of met getRootPane() ipv this.

En zoals Netforce1 al zegt: roep het aan op de EDT.

[ Voor 17% gewijzigd door Remus op 21-04-2008 15:27 ]