用java监听键盘输入,该如何解决

Python037

用java监听键盘输入,该如何解决,第1张

用java监听键盘输入

我现在做一个程序需要实时得跟踪键盘的输入,当客户输入回车键后,需要将客户在输回车前面所输的内容到数据库里去匹配,然后进行相应的操作。我是用KeyAdapter类的监听功能,但我这个程序是希望运行在后台,也就是说当这个程序启动的时候,无论客户在那里输入内容(在ie,word等其他应用程序),都将被记录下来,但目前好像只能在程序里起一个JPanal,并且把这个Panel设成focus后才会记录.这样,我在切换到其他应用程序时就不会监听成功了.

------解决方案--------------------------------------------------------

貌似你这个非法

------解决方案--------------------------------------------------------

我好像是没想到

------解决方案--------------------------------------------------------

只用java是做不了的,要用Windows的系统钩子进行。因为你的程序是运行在java平台上的,不可能超出java虚拟机的范围,java虚拟机是一个进程,ie,word是其他的进程,要想捕获其他发给其他进程的消息,必须站在系统的角度才能做到,在自己的进程里面再折腾也不能得到别的进程的任何信息。

------解决方案--------------------------------------------------------

import java.awt.BorderLayout

import java.awt.event.KeyAdapter

import java.awt.event.KeyEvent

import java.io.Serializable

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JTextField

public class TextTest extends JFrame implements Serializable {

private static final long serialVersionUID=1L

private JTextField jtf

private JLabel jab

TextTest(){

this.setBounds(300,300,300,200)

this.setTitle("文本测试")

this.setResizable(false)

init()

this.setVisible(true)

}

public static void main(String[] args) {

new TextTest()

}

private void init() {

this.setDefaultCloseOperation(3)

jab=new JLabel("字符检测")

jtf=new JTextField(30)

myEve()

this.add(jtf,BorderLayout.NORTH)

this.add(jab,BorderLayout.SOUTH)

}

private void myEve() {

jtf.addKeyListener(new KeyAdapter() {

public void keyTyped(KeyEvent k) {

int x=jtf.getText().length()

if(x>2) {

k.consume()

jab.setText("警告,字数超限,禁止输入!")

}else {

jab.setText("允许输入:")

}

}

})

}

}