java - 如何在一个文本区域中在另一个文本区域中按下的每个字母/键之间获得 2 秒的打印延迟?

标签 java netbeans

我试图在一个文本区域中输入的每个字母之间添加 2 秒的延迟,然后再将其打印/显示在另一个文本区域上。

我使用了两个类:

  • 一个用于名为 Printdelay 的 GUI
  • 一个用于线程,称为 TwoSecondDelay

除了线程的执行之外,一切正常。

这是 GUI 的代码:

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());
    }

}

这是 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) {

        }

    }

}

这些类也位于它们自己的单独文件中。

最佳答案

不需要使用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();
}

关于java - 如何在一个文本区域中在另一个文本区域中按下的每个字母/键之间获得 2 秒的打印延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022568/

相关文章:

java - 如果文件存在,PrintWriter 追加数据

java - 如何在java代码中运行mysqldump命令?

java - hql查询外连接

Tomcat 服务器 Netbeans 8.0 在 Windows 8 中不工作

java - 动画:如何使动画在我访问另一个 Activity 并返回后重复播放?

java - 如何更正 SecurityTokenReference,使用 WSS4J 签署 SOAP

oracle - Netbeans 中的 SQLJ

jsf - 在 .taglib.xml 中注册自定义组件后,Netbeans 中不会自动完成属性

java - 在 netbeans 7.1 中表示泰米尔语 unicode

testing - 强制 NetBeans 7.3 在测试运行时重新编译项目?