问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于javaKeyEvent按键反应的。懂的前辈帮忙看下

发布网友 发布时间:2022-05-01 13:55

我来回答

2个回答

热心网友 时间:2023-10-16 12:39

你把keyPressed函数里所有的e.getKeyChar()函数改成e.getKeyCode()函数就行了.
因为e.getKeyChar()函数只对字符键起作用,对控制键不起作用.e.getKeyCode()函数既能识别控制键也能识别小写状态下的wsad按键.
完整的程序如下:
package Draw;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class test2 extends JFrame{
/**
* @param args
*/
dong d=null;
public test2(){
d=new dong();
d.addKeyListener(d);
this.addKeyListener(d);

this.add(d);
this.setSize(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
test2 ts=new test2();
}
}
class dong extends JPanel implements KeyListener{
int x=10;
int y=10;
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
g.fillRect(0, 0, 200,200);
g.setColor(Color.BLACK);
g.fillOval(x, y, 10,10);

}
//键被按下
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP||e.getKeyCode()==KeyEvent.VK_W){
System.out.print(e.getKeyCode());
y--;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_DOWN||e.getKeyCode()==KeyEvent.VK_S){
y++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT||e.getKeyCode()==KeyEvent.VK_D){
x++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_LEFT||e.getKeyCode()==KeyEvent.VK_A){
x--;
repaint();
}
}
public void keyReleased(KeyEvent arg0) {
}
public void keyTyped(KeyEvent arg0) {
}
}

热心网友 时间:2023-10-16 12:39

应该写 e.getKeyCode 上是KeyEvent_VK.UP 以此类推

热心网友 时间:2023-10-16 12:39

你把keyPressed函数里所有的e.getKeyChar()函数改成e.getKeyCode()函数就行了.
因为e.getKeyChar()函数只对字符键起作用,对控制键不起作用.e.getKeyCode()函数既能识别控制键也能识别小写状态下的wsad按键.
完整的程序如下:
package Draw;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class test2 extends JFrame{
/**
* @param args
*/
dong d=null;
public test2(){
d=new dong();
d.addKeyListener(d);
this.addKeyListener(d);

this.add(d);
this.setSize(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
test2 ts=new test2();
}
}
class dong extends JPanel implements KeyListener{
int x=10;
int y=10;
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
g.fillRect(0, 0, 200,200);
g.setColor(Color.BLACK);
g.fillOval(x, y, 10,10);

}
//键被按下
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP||e.getKeyCode()==KeyEvent.VK_W){
System.out.print(e.getKeyCode());
y--;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_DOWN||e.getKeyCode()==KeyEvent.VK_S){
y++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT||e.getKeyCode()==KeyEvent.VK_D){
x++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_LEFT||e.getKeyCode()==KeyEvent.VK_A){
x--;
repaint();
}
}
public void keyReleased(KeyEvent arg0) {
}
public void keyTyped(KeyEvent arg0) {
}
}

热心网友 时间:2023-10-16 12:39

应该写 e.getKeyCode 上是KeyEvent_VK.UP 以此类推

热心网友 时间:2023-10-16 12:39

你把keyPressed函数里所有的e.getKeyChar()函数改成e.getKeyCode()函数就行了.
因为e.getKeyChar()函数只对字符键起作用,对控制键不起作用.e.getKeyCode()函数既能识别控制键也能识别小写状态下的wsad按键.
完整的程序如下:
package Draw;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class test2 extends JFrame{
/**
* @param args
*/
dong d=null;
public test2(){
d=new dong();
d.addKeyListener(d);
this.addKeyListener(d);

this.add(d);
this.setSize(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
test2 ts=new test2();
}
}
class dong extends JPanel implements KeyListener{
int x=10;
int y=10;
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
g.fillRect(0, 0, 200,200);
g.setColor(Color.BLACK);
g.fillOval(x, y, 10,10);

}
//键被按下
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP||e.getKeyCode()==KeyEvent.VK_W){
System.out.print(e.getKeyCode());
y--;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_DOWN||e.getKeyCode()==KeyEvent.VK_S){
y++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT||e.getKeyCode()==KeyEvent.VK_D){
x++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_LEFT||e.getKeyCode()==KeyEvent.VK_A){
x--;
repaint();
}
}
public void keyReleased(KeyEvent arg0) {
}
public void keyTyped(KeyEvent arg0) {
}
}

热心网友 时间:2023-10-16 12:39

应该写 e.getKeyCode 上是KeyEvent_VK.UP 以此类推

热心网友 时间:2023-10-16 12:39

你把keyPressed函数里所有的e.getKeyChar()函数改成e.getKeyCode()函数就行了.
因为e.getKeyChar()函数只对字符键起作用,对控制键不起作用.e.getKeyCode()函数既能识别控制键也能识别小写状态下的wsad按键.
完整的程序如下:
package Draw;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class test2 extends JFrame{
/**
* @param args
*/
dong d=null;
public test2(){
d=new dong();
d.addKeyListener(d);
this.addKeyListener(d);

this.add(d);
this.setSize(200,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
test2 ts=new test2();
}
}
class dong extends JPanel implements KeyListener{
int x=10;
int y=10;
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
g.fillRect(0, 0, 200,200);
g.setColor(Color.BLACK);
g.fillOval(x, y, 10,10);

}
//键被按下
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_UP||e.getKeyCode()==KeyEvent.VK_W){
System.out.print(e.getKeyCode());
y--;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_DOWN||e.getKeyCode()==KeyEvent.VK_S){
y++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT||e.getKeyCode()==KeyEvent.VK_D){
x++;
repaint();
}
if(e.getKeyCode()==KeyEvent.VK_LEFT||e.getKeyCode()==KeyEvent.VK_A){
x--;
repaint();
}
}
public void keyReleased(KeyEvent arg0) {
}
public void keyTyped(KeyEvent arg0) {
}
}

热心网友 时间:2023-10-16 12:39

应该写 e.getKeyCode 上是KeyEvent_VK.UP 以此类推
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
在RLC电路中,谐振频率为___同期为___谐振条件为___? 电磁振荡并联 RLC振荡回路的谐振频率与振荡特性 佛手柑水培还是干放 中山市美派电器有限公司怎么样? 成都美派电器有限公司怎么样? 两条不同品牌的DDR3内存条可以一起用吗 驾驶证的牡丹卡多长时间能办下来 新衣服必须用洗衣液洗才能去甲醛吗? 梦见逛街被偷抢 2024年买什么品牌的运动男鞋比较好? asp.net 怎么读取微信 EventKey值 怎么获得event 请指教:Android中为什么我的自定义KeyEvent事件没有相应的执行呢,代码如下: 如何使用event header中的key值 Java keyevent不能用 JAVA事件处理中的KeyEvent问题 为什么我的python代码报错,我第一次用pygame,代码是照抄书上的,但是跑出来就报错……说event没有key 太平公主秘史下载 太平公主秘史下载地址 电视剧太平公主秘史全集下载 太平公主秘史迅雷下载 派出所的故事范亮和他哥哥房产之争 新婚之夜床塌了门框掉下来了是哪部电视剧的情节 炊事班的故事原班人马演过什么有洪剑涛导的电视剧 邵峰和范明同演的电视剧 电视剧《媳妇是怎样炼成的》高清在线观看 媳妇是怎样炼成的全集百度视频播放 范亮的介绍 调整图标大小桌面内容丢失 武林外传中范明演过什么电视剧? 求仙剑奇侠传3电视剧小角色的演员 派出所的故事谁演的 悄悄和图钉那个电视剧叫什么名字 媳妇是怎样炼成的剧情介绍 awt.event.KeyEvent键值常量表 怎样模拟发送key event按键消息和touch event触摸消息? onkeydown="if(event.keyCode==27) 求助! JAVA 键盘监听 onkeyDown="if(event.keyCode==13){form1.PWD.focus();} 这段代码什么意思. 安卓里面的onkeydown()方法里的keyevent怎么理解,用通俗的话解释一下,谢 找老师起个名字,谢谢!!! 小宝宝到底要不要吃DHA java的KeyEvent类中的VK_ESCAPE是什么意思 我刚接触安卓,对于OnkeyDown(int keyCode,keyEvent event)这句代码不理解求大神指点指点 请老师取名…… event对象的事件句柄 (Event Handlers) 请专业老师帮忙起个好名字 android KeyEvent.KEYCODE_SEARCH 哪个键 起名字要找专门的起名老师吗,王怀远水平怎样呀? 请老师起名字 exel的取左边函数是什么 小孩子取名字在帮帮测上找老师应该是可以的吧? 大家孩子起名是自己起的还是找老师起的呢? ASP取出左边字符函数