Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个线程,该线程将写入使用键盘键入的每个字符_Java_Multithreading_Swing_Keyboard_Keylistener - Fatal编程技术网

Java 创建一个线程,该线程将写入使用键盘键入的每个字符

Java 创建一个线程,该线程将写入使用键盘键入的每个字符,java,multithreading,swing,keyboard,keylistener,Java,Multithreading,Swing,Keyboard,Keylistener,我正在尝试创建一个线程,该线程将创建一个文本文件,并将使用key listener写入计算机上键入的每个字符,但我不知道如何将创建的文件附加到用户将输入的下一个字符……可能是我混淆了所有人,但我只想存储每个字符用户将键入的每个字符(通过键盘) 这就像每当我执行我的应用程序时,它都会创建一个文件,并开始将keychar写入该文件。问题有点不清楚。首先,若要存储系统中键入的每个字符,那个么这是一项艰巨的任务(稍后解释)。如果您希望在顶部的Java窗口中注册键击,那么您可以通过不关闭文件并附加到相同的

我正在尝试创建一个
线程
,该线程将创建一个
文本文件
,并将使用key listener写入计算机上键入的每个字符,但我不知道如何将创建的文件附加到用户将输入的下一个字符……可能是我混淆了所有人,但我只想存储每个字符用户将键入的每个字符(通过键盘)


这就像每当我执行我的应用程序时,它都会创建一个文件,并开始将
keychar
写入该文件。

问题有点不清楚。首先,若要存储系统中键入的每个字符,那个么这是一项艰巨的任务(稍后解释)。如果您希望在顶部的Java窗口中注册键击,那么您可以通过不关闭文件并附加到相同的
编写器
来实现

因此,它将继续附加到它。但请确保所有的密钥处理都发生在
SwingUtilities.invokeLater()中

现在,如果在所有的任务,它为任何窗口。然后它是乏味的,首先是因为你需要操作系统的支持。您必须使用
JNI
,或者最好使用
JNA
。对于windows,将有所帮助。我不清楚应该使用哪个函数,但是您可以在这里找到所有需要的函数(尽管您需要先查看win32 api)

类似地,对于Mac,使用框架(已弃用)或
Cocoa


这就是痛苦,如果你用Java做的话

你现在怎么写文件?
写计算机上键入的每个字符
-Java不支持这一点。您只能访问当前具有焦点的Java应用程序的KeyEvents。请粘贴您可能拥有的示例代码。我们可以看一看,并根据它提出解决方案。我不认为在Java中有这样的方式来写文件。粗略的解决方案可以是,您可以从键盘缓冲(文件缓冲)字符,并在间隔一段时间后刷新它file@ajduke当然可以附加文件,你只需要正确地打开它们,正如你所说的,我必须创建一个User32的实例,但我认为它会提供每个步骤,比如复制一个文件或执行一些操作。很抱歉,我没有收到你的声明。你是说user32反映了用户执行的所有操作,还是仅仅代表了键盘实例?它具有必要的功能,可以使用这些功能获得按键。但我建议您尝试使用Visual++或C#。它将在四分之一的时间内以较少的努力完成。JNA是一个巨大的痛苦。这里到那里的一个位只会使您的JVM在那里崩溃。如果您是在JVM上进行这项工作,我建议您彻底阅读JNA和平台的文档。PS:我浪费了一个月的时间在上面,因此我的经验是:)thanx jatin我用vb做过这件事,但我想让应用程序一直运行到用户关闭操作系统为止
private final User32 lib = = User32.INSTANCE;
//lib.appropriateMethod