1

Je tente de créer un jeu basé sur du texte avec une interface graphique en Java et j'ai besoin d'utiliser le SwingWorker. Cependant, je ne comprends pas des tutoriels et ça ne me pas de sens :(.Problèmes SwingWorker

public void write(String msg){ 
    int i=0; 
    while(true){ 
     try { 
      Thread.sleep(300); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     console.setText(console.getText()+ msg.charAt(i)); 
     if(i==msg.length()){ 
      console.setText(console.getText()+ newline); 
      break; 
     } 
    } 
} 

Essentiellement, ce que je suis en train de faire est de passer d'une chaîne à une méthode et l'imprimer par ombles carboniser mais je ne peux pas que le sommeil interupts() l'EDT et bloque l'interface graphique pour msg.length() * 400ms :(.

Si quelqu'un a une solution de code à l'aide du SwingWorker je serais thankfull :)

+0

Pourquoi voulez-vous d'utiliser un SwingWorker dans un * « jeu basé sur le texte » *? Swingworkers sont destinés à être utilisés avec Swing ... – assylias

+0

Le jeu basé sur le texte a encore une interface graphique –

+0

'while (true) {' est une boucle sans fin, j'ai vu là 'break;', mais mieux pourrait être de changer 'true' à variable locale, pour une meilleure aide plus tôt post un [SSCCE] (http://sscce.org/), court, runnable, compilable, juste à propos de question, 'JFrame',' JTextArea' et 'SwingWorker' avec la valeur de' Random ', sur ce forum sont des codes (sous forme de SSCCE) environ 35 - 50lines sur le même numéro – mKorbel

Répondre

1

vous pouvez essayer cela simplement pour avoir l'idée de savoir comment utiliser swingworker avec de la chaîne:

public void runInBackgroud(final String msg) 
{ 
    SwingWorker<Object, Object> task = new SwingWorker<Object, Object> () 
    { 
     public Object doInBackground() 
     { 
      write(msg); 
      return null; 
     } 
     public void done() 
     {} 
    }; 
    task.execute (); 
} 

et il suffit d'appeler cette méthode runInBackgroud(msg);

+0

merci! Je pense que je peux commencer avec ça! –

+0

vous pouvez également accepter la réponse alors;) –