「键盘事件java」键盘事件包括哪几种

博主:adminadmin 2023-01-14 17:21:07 683

今天给各位分享键盘事件java的知识,其中也会对键盘事件包括哪几种进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA 键盘事件触发问题

你没有API吗?下面是java API对KeyEvent的解释: getKeyChar 方法总是返回有效的 Unicode 字符或 CHAR_UNDEFINED。KEY_TYPED 事件报告字符输入:KEY_PRESSED 和 KEY_RELEASED 事件不必与字符输入关联。因此, 可以保证 getKeyChar 方法的结果只对 KEY_TYPED 事件有意义。 对于按下键和释放键事件,getKeyCode 方法返回该事件的 keyCode。对于键入键事件,getKeyCode 方法总是返回 VK_UNDEFINED。 “按下键”和“释放键”事件 是低级别事件,依赖于平台和键盘布局。只要按下或释放键就生成这些事件,它们是发现不生成字符输入的键(如动作键、修改键等等)的惟一方式。通过 getKeyCode 方法可指出按下或释放的键,该方法返回一个虚拟键码。 虚拟键码 用于报告按下了键盘上的哪个键,而不是一次或多次键击组合生成的字符(如 "A" 是由 shift + "a" 生成的)。 例如,按下 Shift 键会生成 keyCode 为 VK_SHIFT 的 KEY_PRESSED 事件,而按下 'a' 键将生成 keyCode 为 VK_A 的 KEY_PRESSED 事件。释放 'a' 键后,会激发 keyCode 为 VK_A 的 KEY_RELEASED 事件。另外,还会生成一个 keyChar 值为 'A' 的 KEY_TYPED 事件。 按下和释放键盘上的键会导致(依次)生成以下键事件: KEY_PRESSED KEY_TYPED(只在可生成有效 Unicode 字符时产生。) 但在某些情况下(例如,在激活自动重复或输入方法时),该顺序可能会有所不同(并且与平台有关)。

java程序设计用代码怎样编写一个“键盘事件”?

创建一个关于键盘事件的程序。该程序实现了当用户按下键盘时,程序中的一个面板中将显示用户的键盘输入。为了实现对键盘事件进行处理,容器类必须实现接口KeyListener.该接口定义了3个方法KeyPressed(KeyEvebt e)、KeyReleased(Key-Event e)、KeyTyped(KeyEvent e)。其中,当按下一个键时,调用KeyTyped方法;释放一个键时,调用KeyReleased方法;如果一个字符键被按下,那么会调用KeyTyped方法。因此,当按下一个键时,通常会产生两到三个事件。实验KeyType方法,以显示用户输入的字符。 (1)创建一个名为KeyEventDemo的java文件。 (2)在该文件中创建KeyEventDemo类,该类继承了JFrame,并实现KeyListener接口。 (3)在KeyEventDemo类中实现在KeyPressed、KeyReleased和KeyType方法。 (4)在KeyEventDemo类中添加String类型变量。该变量用于保存用户输入的字符。 (5)在KeyType方法中调用KeyEvent的getKeyChar()方法,获取用户输入的字符,并保存到String类型变量中。最后调用repaint方法更新显示用户输入的字符串。 (6)为KeyEventDemo类添加paint方法,此方法负责显示用户输入的字符。 (7)用户也可以在KeyPressed和KeyReleased方法中间调用getKeyCode方法,以获取特殊的按键。比如方向键和退格键。

Java 键盘事件

1. 因为ComonentEvent是InputEvent的super class, 它的sub class包括

ContainerEvent, FocusEvent, InputEvent, PaintEvent 以及 WindowEvent

所以你的例子里不能使用casting, 反过来才可以.

2. 至于为什么这里的e是ComponentEvent, 从你给的code里边没办法确认. 猜测的话,是你使用了ComponentListener, 如果你的程序只需要考虑接收键盘动作的话,建议改成KeyListener, 当然InputListener也是可以,不过通常implements的时候选用最底层的class比较好一点. 如果你同时需要考虑其它的Event,比如ContainerEvent, 那没有捷径,你需要两个相对应各自sub class的Listener.

3.每次按下键盘程序执行两次, 这个是因为KeyEvent包含以下三种.

KEY_PRESSED, KEY_RELEASED 和 KEY_TYPED

对应三个在Implement KeyEvent时必须的方法

public void keyTyped(KeyEvent e) { }

public void keyPressed(KeyEvent e) { }

public void keyReleased(KeyEvent e) {

而你每一次敲一次键盘, Listener会被触发至少两次,由于key pressed和key released. 如果说这个键不是action key(可以用isActionKey()判断),比如abcd1234一类的可以被显示的,key typed也会触发Listener.

所以说,如果你的程序执行位置选择在每一次Listener被触发时,且没有经过任何判断,那当然就会执行2-3次了 (你的例子中选择的键是左方向键,属于action key所以是2次).

4.如果想要按一次键盘只执行一次的话,有以下几种办法.

a. 自己做一个class, implement KeyListener, 然后把这个Listener添加到component上.然后把你的判断以及要运行的代码放在keyPressed()或者keyReleased()下边. 这种方法可以让程序可读性增加,并且这也是本来设计这三个methods的本意,非常推荐.

b. 比较 e.getID() == KeyEvent.KEY_PRESSED (或者KEY_RELEASE, KEY_TYPED, 根据需要选择). 这种方法虽然简单易行,也比较符合你提供的例子(用一个自己的method去处理所有的AWTEvent) 但是在有时间的情况下比较不推荐,第一种方法才是正选.

c. 检查e.paramString() 里边的内容, 这个字符串开头就是当前Event的名字(KEY_PRESSED, KEY_RELEASED 或者 KEY_TYPED). 但是一般paramString()都是debug用,只是检查Event类型用getID就可以了,非常不推荐用.

由于提供的信息有限,所以产生ClassCastException的详细原因没办法给你仔细分析,不过还是希望能帮到你.

java中如何处理键盘事件?

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Example6_12 extends JFrame implements KeyListener

{

JButton b[]=new JButton[3];

int x,y;

public Example6_12()

{

setSize(300,300);

setVisible(true);

setLayout(new FlowLayout());

for(int i=0;i=2;i++)

{

b[i]=new JButton(" "+i);

b[i].addKeyListener(this);

add(b[i]);

}

validate();

}

public void KeyPressed(KeyEvent e)

{

JButton button=(JButton)e.getSource();

x=button.getBounds().x;

y=button.getBounds().y;

if(e.getKeyCode()==KeyEvent.VK_UP)

{

y=y-2;

if(y=0)

y=300;

button.setLocation(x,y);

}

else if(e.getKeyCode()==KeyEvent.VK_DOWN)

{

y=y+2;

if(y=300)

y=0;

button.setLocation(x,y);

}

else if(e.getKeyCode()==KeyEvent.VK_LEFT)

{

x=x-2;

if(x=0)

x=300;

button.setLocation(x,y);

}

else if(e.getKeyCode()==KeyEvent.VK_RIGHT)

{

x=x+2;

if(x=300)

x=0;

button.setLocation(x,y);

}

}

public void keyTyped(KeyEvent e){}

public void keyReleased(KeyEvent e){}

        public void keyPressed(KeyEvent e){}

public static void main(String[] args)

{

Example6_12 win=new Example6_12();

win.setDefaultCloseOperation(EXIT_ON_CLOSE);

}

}

java中的键盘事件

请问你的键盘时间事某个特定按钮还是要监听键盘按下的键呢~?我都给你列在下面吧!如果事特定的按钮我给你个例子!其实用的就是一句话!JFrame.getRootPane.setDefaultButton(new JButton()) ;就可以啦!意思是 取跟面板然后设置默认按钮就可以了! 如果你事要监听单个的键盘按钮的话就这样~~~~例子如下!:你看懂这个代码就明白了!package IO;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;public class KeyEventDemo extends JFrame implements ActionListener, KeyListener {

JTextArea txt1;

JButton btnOK;

JPanel pnlMain;

public KeyEventDemo() {

pnlMain = new JPanel();

setContentPane(pnlMain);

txt1 = new JTextArea();

btnOK = new JButton("确认");

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

btnOK.addActionListener(this);//在按钮上添加事件监听

pnlMain.setLayout(new BorderLayout());//添加布局器

pnlMain.add(txt1,BorderLayout.NORTH); //TextField 布局在上方

pnlMain.add(btnOK,BorderLayout.SOUTH); //Button 布局在下方

setTitle("好啊");

setSize(300, 200);

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

setDefaultCloseOperation(EXIT_ON_CLOSE);

} public void keyTyped(KeyEvent e) { //6

String c = e.paramString();

if (c == "o") {

System.out.println("快捷键 " + e.getKeyChar() + " 按下" );

txt1.setText("收到,呵呵");

}else{

System.out.println("普通键 " + e.getKeyChar() + " 按下" );

}

}

public void actionPerformed(ActionEvent event){

System.out.println("按钮按下");

} public void keyPressed(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样 public void keyReleased(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样 public static void main(String[] args) {

new KeyEventDemo();

}

}

关于键盘事件java和键盘事件包括哪几种的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。