2017-09-03 1 views
0

J'essaye d'ajouter un délai de 2 secondes entre chaque lettre qui est tapée dans une zone de texte avant qu'elle soit imprimée/affichée sur une autre zone de texte.Comment puis-je obtenir un délai d'impression de 2 secondes dans une zone de texte entre chaque lettre/touche enfoncée dans une autre zone de texte?

Je l'ai utilisé deux classes:

  • Un pour une interface graphique appelée Printdelay
  • Un pour le fil, appelé TwoSecondDelay

Tout fonctionne bien sauf pour l'exécution du fil.

Voici le code pour l'interface graphique:

import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextArea; 


public class PrintDelay extends javax.swing.JFrame implements KeyListener{ 

    int name; 

    JTextArea server = new JTextArea (10, 20); 
    JTextArea client = new JTextArea (10, 20); 


    public PrintDelay() { 

     super ("Typing..."); 

     setSize (650, 220); 
     setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 

     JPanel panel = new JPanel(); 

     server.addKeyListener (this); 

     panel.add (server); 
     panel.add (client); 
     add(panel); 

     setVisible (true); 

    } 

    public static void main (String... args) { 

     new PrintDelay(); 

    } 


    @Override 
    public void keyTyped(KeyEvent e) 
    { 

    } 

    @Override 
    public void keyPressed(KeyEvent e) 
    { 

    } 

    @Override 
    public void keyReleased(KeyEvent e) 
    { 
     new TwoSecondDelay (Integer.toString(name)); 
     name++; 
     client.setText(server.getText()); 
    } 

} 

Voici le code pour le TwoSecondDelay:

public class TwoSecondDelay implements Runnable{ 

    String name; 
    Thread t; 

    TwoSecondDelay (String threadname) { 

     name = threadname; 
     t = new Thread (this, name); 
     t.start(); 

    } 


    @Override 
    public void run() { 

     try { 
       Thread.sleep(2000); 
     } 
     catch (InterruptedException e) { 

     } 

    } 

} 

De plus, les cours sont dans leurs propres fichiers séparés.

+0

Quelle est votre question? – QBrute

+0

Comment puis-je obtenir un délai d'impression de 2 secondes dans une zone de texte entre chaque lettre/touche enfoncée dans une autre zone de texte? – Yeezus

Répondre

3

  Pas besoin d'utiliser TwoSecondDelay

@Override 
public void keyReleased(KeyEvent e) 
{ 
    typeText(); 
    /*new TwoSecondDelay (Integer.toString(name)); 
    name++; 
    client.setText(server.getText());*/ 

} 

public void typeText(){ 
    ActionListener listener = new ActionListener(){ 
     public void actionPerformed(ActionEvent event){ 
      client.setText(server.getText()); 
     } 
    }; 
    Timer timer = new Timer(2000, listener); 
    timer.setRepeats(false); 
    timer.start(); 
} 
+0

Pouce en l'air :) Merci! – Yeezus