Java将每个值添加到字符串中

Java将每个值添加到字符串中,java,keylogger,Java,Keylogger,我有一个非常大的程序,需要检查输入的字符,这只是坏掉的部分的一部分。所以,当我让它记录每个字符的输入时,它就起作用了。但是,当我尝试将每个字符添加到字符串中时,当他们键入单词hi时,结果如下所示: hi 而不是 h i 无论我尝试什么,它都会给我键入的第一个值,并且不会将每个字符添加到字符串中。我还希望它每隔5秒打印一次字符串。我不确定我是否正确,但它可能是正确的 String log = " "; if(event.getVirtualKey

我有一个非常大的程序,需要检查输入的字符,这只是坏掉的部分的一部分。所以,当我让它记录每个字符的输入时,它就起作用了。但是,当我尝试将每个字符添加到字符串中时,当他们键入单词hi时,结果如下所示:

hi
而不是

h
i
无论我尝试什么,它都会给我键入的第一个值,并且不会将每个字符添加到字符串中。我还希望它每隔5秒打印一次字符串。我不确定我是否正确,但它可能是正确的

            String log = " ";
            if(event.getVirtualKeyCode() == GlobalKeyEvent.VK_SPACE){
                log = log + "";
            }

            if(event.getVirtualKeyCode() == GlobalKeyEvent.VK_BACK){
                log = log + "[BACKSPACE]";
            }

            String timestamp = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss").format(Calendar.getInstance().getTime());
            while(true){
                try {
                    Thread.sleep(5000);
                    System.out.println("[" + timestamp + "]" + log);
                } catch(InterruptedException ex) {
                    Thread.currentThread().interrupt();
                }
            }

尝试声明新字符串:

String log = new String(" ");

在哪里添加这些字符?log=log+“”;和log=log+“[退格]”;假设,当您运行这行时,log=“M”:log=log+“”=>log=“M”+“”,即log=“M”,字符是如何进入日志的?
log=log+“”
是一种浪费。此外,还可以在每个字符后打印(根据代码)。因此,如果这不是您想要的,则需要两个线程。一个向生成器添加字符串,另一个在清除该生成器并打印日志之前等待5秒