关于keyAdapter可以接收几次shell接收键盘输入入的疑问

想问吧里的大神们一个关于GUI的键盘的监听器的问题【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:711,254贴子:
想问吧里的大神们一个关于GUI的键盘的监听器的问题收藏
代码写在1楼了额。主要是想问下键入一个键和释放一个键还有按下一个键的区别。在测试代码时使用键入键函数时无法或得getKeyText和keyCode
使用释放键和按下键函数都可以获得getKeyText和keyCode。在使用KeyEvent.consume()来过滤不符合条件的键时,使用键入键函数和释放键函数时可以将其过滤。但是使用按下键函数时就无法将其过滤还是会输出在本文框里面所以对键入一个键和释放一个键还有按下一个键
有没有大神帮忙指点迷津下
51CTO学院12年行业品牌,1600万用户选择,中国专业IT技能学习平台.java资深名师授课,0基础从入门到精通,java报名与培训中心.
public class MouseAndKayDemo {public MouseAndKayDemo() {init();}//先明确要使用的构件private Fprivate Bprivate TextFprivate void init() {f=new Frame(&new frame&);f.setVisible(true);f.setBounds(400,400,400,400);f.setLayout(new FlowLayout());tf=new TextField(30);b =new Button(&a button&);f.add(tf);f.add(b);mouseListener();keyListener();}//插入键盘监听器private void keyListener() {tf.addKeyListener(new KeyAdapter(){/*keyPressed
键盘在按下去以后就触发了事件
这个键还没结束
在把键盘上的字母打印到TextField
就触发了事件* * keyReleased键盘的键在释放以后就触发了事件
这个键还没结束
* 在把键盘上的字母打印到TextField
才触发了事件* * keyTyped 键盘的键在按下和释放以后(键入)后才触发了事件
触发事件前 这个键就已经结束了* 所以无法使用触发事件* 可以这样理解键入是在键盘的键在按下和释放以后才开始* * */@Override/*public void keyPressed(KeyEvent e) {//System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));int code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){//符合条件可以将字母和数字打印到TextField,//不符合条件无法将字母和数字打印到TextField,System.out.println(&请输入26个英文字母&);e.consume();}*//*public void keyTyped(KeyEvent e) { //System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));//无法获得Text和codeint code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){
//不管是否符合条件都无法将字母和数字打印到TextFieldSystem.out.println(&请输入26个英文字母&);e.consume();}*/public void keyReleased(KeyEvent e) {//System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));int code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){//不管是否符合条件都可以将字母和数字打印到TextFieldSystem.out.println(&请输入26个英文字母&);e.consume();}}});}//插入鼠标监听器private void mouseListener() {b.addMouseListener(new MouseAdapter(){int count=1;@Overridepublic void mouseReleased(MouseEvent e) {// TODO 自动生成的方法存根if(e.getClickCount()==2)tf.setText(&以点击&+count++);}});}public static void main(String[] args) {MouseAndKayDemo
a =new MouseAndKayDemo();}}
private void keyListener() {tf.addKeyListener(new KeyAdapter(){/*keyPressed
键盘在按下去以后就触发了事件
这个键还没结束
在把键盘上的字母打印到TextField
就触发了事件* * keyReleased键盘的键在释放以后就触发了事件
这个键还没结束
* 在把键盘上的字母打印到TextField
才触发了事件* * keyTyped 键盘的键在按下和释放以后(键入)后才触发了事件
触发事件前 这个键就已经结束了* 所以无法使用触发事件* 可以这样理解键入是在键盘的键在按下和释放以后才开始* * */@Override/*public void keyPressed(KeyEvent e) {//System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));int code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){//符合条件可以将字母和数字打印到TextField,//不符合条件无法将字母和数字打印到TextField,System.out.println(&请输入26个英文字母&);e.consume();}*//*public void keyTyped(KeyEvent e) { //System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));//无法获得Text和codeint code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){
//不管是否符合条件都无法将字母和数字打印到TextFieldSystem.out.println(&请输入26个英文字母&);e.consume();}*/public void keyReleased(KeyEvent e) {//System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));int code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){//不管是否符合条件都可以将字母和数字打印到TextFieldSystem.out.println(&请输入26个英文字母&);e.consume();}}});}
private void keyListener() {tf.addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e) {//System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));int code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){//符合条件可以将字母和数字打印到TextField,//不符合条件无法将字母和数字打印到TextField,System.out.println(&请输入26个英文字母&);e.consume();}*//*public void keyTyped(KeyEvent e) { //System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));//无法获得Text和codeint code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){
//不管是否符合条件都无法将字母和数字打印到TextFieldSystem.out.println(&请输入26个英文字母&);e.consume();}*/public void keyReleased(KeyEvent e) {//System.out.println(e.getKeyCode()+&===&+KeyEvent.getKeyText(e.getKeyCode()));int code = e.getKeyCode();if (!(code&=KeyEvent.VK_A&&code&=KeyEvent.VK_Z)){//不管是否符合条件都可以将字母和数字打印到TextFieldSystem.out.println(&请输入26个英文字母&);e.consume();}}});}
有没有大神帮忙看一下==
我觉得你中间的注释已经理解好了啊/*keyPressed
键盘在按下去以后就触发了事件
这个键还没结束
在把键盘上的字母打印到TextField
就触发了事件* * keyReleased键盘的键在释放以后就触发了事件
这个键还没结束
* 在把键盘上的字母打印到TextField
才触发了事件* * keyTyped 键盘的键在按下和释放以后(键入)后才触发了事件
触发事件前 这个键就已经结束了* 所以无法使用触发事件* 可以这样理解键入是在键盘的键在按下和释放以后才开始我感觉理解这些就够用吧,做个桌面小程序什么的没怎么做过GUI..帮你一顶
* keyTyped 键盘的键在按下和释放以后(键入)后才触发了事件 触发事件前 这个键就已经结束了* 所以无法使用触发事件* 可以这样理解键入是在键盘的键在按下和释放以后才开始主要就是这个键入键
按照我的这个理解 键入键应该是无法触发事件的
但是却被KeyEvent.consume()过滤掉了
如果是可以触发事件的
却无法获取getKeyText和keyCode。还有keyReleased明明是可以获取getKeyText和keyCode的
却不能被KeyEvent.consume()过滤。。 很纠结呀
登录百度帐号关于keyAdapter可以接收几次键盘输入的疑问
[问题点数:20分,结帖人qq]
关于keyAdapter可以接收几次键盘输入的疑问
[问题点数:20分,结帖人qq]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|关于KeyListener的问题_百度知道
关于KeyListener的问题
import java.awt.G
import java.awt.Graphics2D;
import java.awt.event.KeyA
import java.awt.event.KeyE
import java.awt.event.KeyL
import javax.swing.*;
public class Test2 extends JPanel implements KeyListener{...
我有更好的答案
在f.setVisible(true);后面加一句f.addKeyListener(this);就行了。完整的程序如下:import java.awt.Gimport java.awt.Graphics2D;import java.awt.event.KeyAimport java.awt.event.KeyEimport java.awt.event.KeyLimport javax.swing.*;public class Test2 extends JPanel implements KeyListener{static Test2 e = new Test2();public static void main(String[] args) {// TODO Auto-generated method stub
e.init();}public void init(){JFrame f = new JFrame();f.setFocusable(true);f.add(e);f.setSize(500,500);f.setVisible(true);f.addKeyListener(this);
//这里加一句//f.addKeyListener(new KeyAdapter(){//@Override//public void keyPressed(KeyEvent e) {//// TODO Auto-generated method stub//super.keyPressed(e);//if(e.getKeyCode()==KeyEvent.VK_SPACE){//System.out.println(&123&);//}//}//});}public void paintComponent(Graphics g){g.drawString(&abc&,20,30);}@Overridepublic void keyTyped(KeyEvent e) {// TODO Auto-generated method stub}@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stubif(e.getKeyCode()==KeyEvent.VK_SPACE){System.out.println(&123&);}
}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stub}}
采纳率:67%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。KeyAdapter的三个方法的问题【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:711,254贴子:
KeyAdapter的三个方法的问题收藏
51CTO学院12年行业品牌,1600万用户选择,中国专业IT技能学习平台.java资深名师授课,0基础从入门到精通,java报名与培训中心.
在文本框里敲键盘后第二下才有反应,结果换成了keyReleased就好了。然后在JList里选中行是最上一行时按向上方向键让文本框获得焦点,结果焦点在第二行时按一下上,焦点直接跑到文本框了,然后又改为keyPressed就可以了,而改为keyTyped后焦点根本跑不到文本框上去。这都是为什么呢。keyPressed
keyReleased keyTyped这三个方法,看api里的介绍意思好像就是在一次按键中发生的时间不同而已,是这样吗?为什么会效果不同呢。现在又遇到个问题时,我想按上下键后,让文本框显示当前选中行的内容,结果显示的是按键以前的那行,是我第四行那有问题,还是这三个方法没用好
登录百度帐号如何编写一个以键盘按键或者接收某个字符作为程序结束动作_百度知道
如何编写一个以键盘按键或者接收某个字符作为程序结束动作
我有更好的答案
//加入键盘监听this.addKeyListener(new KeyMonitor());private class KeyMonitor extends KeyAdapter{
//重写键盘按下和弹起的方法
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();//如果按的是A键就退出
if(key == KeyEvent.VK_A){
System.exit();
采纳率:22%
用事件的原理。
为您推荐:
其他类似问题
键盘按键的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 cmd 接收键盘输入 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信