Java键盘监听事件(急啊!)

Java键盘监听事件(急啊!),第1张

你的代码按照你的意思改动了一下,应该可以满足你的要求:

import javaawt;

import javaawtevent;

import javaxswing;

public class KeyEventDemo extends JFrame implements ActionListener, KeyListener {

JTextField txt1;

JButton btnOK;

JPanel pnlMain;

public KeyEventDemo() {

pnlMain = new JPanel();

setContentPane(pnlMain);

txt1 = new JTextField(10);

btnOK = new JButton("确认");

txt1addKeyListener(this); //应该是在 TextField 里添加键盘监听事件

btnOKaddActionListener(this);//在按钮上添加事件监听

pnlMainsetLayout(new BorderLayout());//添加布局器

pnlMainadd(txt1,BorderLayoutNORTH); //TextField 布局在上方

pnlMainadd(btnOK,BorderLayoutSOUTH); //Button 布局在下方

setTitle("好啊");

setSize(300, 200);

setVisible(true);//viersible() 函数应该放在最后

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void keyTyped(KeyEvent e) { //6

char c = egetKeyChar();

if (c == 'o') {

Systemoutprintln("快捷键 " + egetKeyChar() + " 按下" );

txt1setText("收到,呵呵");

}else{

Systemoutprintln("普通键 " + egetKeyChar() + " 按下" );

}

}

public void actionPerformed(ActionEvent event){

Systemoutprintln("按钮按下");

}

public void keyPressed(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样

public void keyReleased(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样

public static void main(String[] args) {

new KeyEventDemo();

}

}

额,抽象类其实就是定义了一些接口但又没有去实现的类,这些类定义了接口等它的子类来实现,如果它的子类没有实现这些接口,那么这些子类也是抽象类。抽象类是不能用 new 的方式产生的。

你似乎问错了,应该问接口是啥子东西,接口是。。。。一大堆的东西好难策清楚,看看下面的链接吧,会受益良多的:

>

用java监听键盘输入

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

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

貌似你这个非法

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

我好像是没想到

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

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

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

给你找个例子,看看内部类和匿名内部类的区别:

protected abstract class ExtValueListener implements ActionListener

{

public ExtValueListener(String listenerName) {

thislistenerName = TOPIC_NAME + "" + listenerName + "listener";

}

public String getListenerName() {

return listenerName;

}

}

-----------------------------------------

这里定义了一个抽象类,也就意味着这个类不能被生成实例对象,但是他的子类可以生成对象

在这个抽象类中定义了构造器,一个方法

-----------------------------------------

SourceaddValueListener(new ExtValueListener() {

public void valueChanged(ValueInt value) {

if (!IsSetOk) {

setAllLimits();

} }

});

-----------------------------------------

现在来说说这段程序:

程序中的一个方法:SourceaddValueListener(); 在这个方法中有一个匿名内部类:

new ExtValueListener() {

public void valueChanged(ValueInt value) {

if (!IsSetOk) {

setAllLimits();

} }

}

匿名内部类没有类名,直接就new ExtValueListener() ,这句语句说明生成了一个ExtValueListener抽象类的子类,但是这个子类是什么名字是不知道的,所以说是匿名内部类,就等同于在这里定义一个类来扩展ExtValueListener这个抽象类,下面的方法就是这个匿名内部类的方法,当然他是扩展了ExtValueListener类的,是ExtValueListener的子类,所以ExtValueListener类中的方法在这里也是可以使用的。

所以,你的addKeyListener实际上要用一个匿名内部类来实现。

import javaawteventKeyAdapter;

import javaawteventKeyEvent;

import javaxswingJButton;

import javaxswingJFrame;

public class KeyDemo extends JFrame{

JButton jb = new JButton();

public KeyDemo(){

thisaddKeyListener(new MyListener());

jbaddKeyListener(new MyListener());

thisadd(jb);

thissetSize(200,200);

thissetVisible(true);

}

public class MyListener extends KeyAdapter{

public void keyPressed(KeyEvent arg0) {

Systemoutprint("那句话");

}

}

public static void main(String[] aregs){

new KeyDemo();

}

}

注册监听器你应该知道噻

注意了注册监听这里不像ActionListener那样用按钮注册

这里可以注册的对象很多

你可以用一个按钮 但最好用窗口

要让键盘有反应 一定要在注册监听器后 用注册的那个对象去获得焦点

每个对象好象都有方法去主动获得焦点的

以上就是关于Java键盘监听事件(急啊!)全部的内容,包括:Java键盘监听事件(急啊!)、Java Swing中的键盘监听事件、用java监听键盘输入,该如何解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9510379.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存