按键绑定到键盘java,求一个java小程序实现键盘按键移动,急急!!

求一个java小程序实现键盘按键移动,急急!!

mip版  关注:184  答案:4  悬赏:20

解决时间 2021-01-27 20:18

0d1562fd632876f604b021ce90b71773.png

已解决

2021-01-27 05:10

编写小程序,在小程序窗口显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘代码的方法是 e.getkeycode(),上,下,左,右键的编码分别用常量VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT表示)

最佳答案

acedb60f8793ed6bdb900e9fd93bf0be.png

2021-01-27 06:17

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.JFrame;

import javax.swing.JLabel;

public class Test extends JFrame implements KeyListener {

private static final long serialVersionUID = 1L;

private JLabel jl = new JLabel("java程序设计");

private static final int STEP = 10;//设置移动的幅度

public static void main(String[] args) {

new Test().launchFrame();

}

public void launchFrame() {

this.add(jl);

this.addKeyListener(this);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setBounds(300,200,600,400);

this.setVisible(true);

}

public void keyPressed(KeyEvent e) {//按一个键,可以连续按

key(e);

}

public void keyReleased(KeyEvent e) {//按下放开一个键

}

public void keyTyped(KeyEvent e) {//击一下键

}

public void key(KeyEvent e) {//可以将这个函数添加到上面的三个方法里

switch(e.getKeyCode()) {

case KeyEvent.VK_LEFT ://左箭头

jl.setLocation(jl.getLocation().x - STEP, jl.getLocation().y);

break;

case KeyEvent.VK_RIGHT ://右箭头

jl.setLocation(jl.getLocation().x + STEP, jl.getLocation().y);

break;

case KeyEvent.VK_UP ://上箭头

jl.setLocation(jl.getLocation().x, jl.getLocation().y - STEP);

break;

case KeyEvent.VK_DOWN ://下箭头

jl.setLocation(jl.getLocation().x, jl.getLocation().y + STEP);

break;

}

}

}

另外提醒一下楼上的,应该给JFrame添加KeyListener

全部回答

bd5e9aed98ac973227256579a3cc3805.png

1楼

2021-01-27 08:48

你可以把"Java程序设计"用一个JLabel来显示

显示的位置你可以通过setBounds来设定

你给这个JLabel加键盘事件

发生时判断是哪个键被按了,然后就修改JLabel的setBounds的四个参数就可以了,最后validate(),这样应该就差不多了,好运

b552287cbe3ecfb989b194acb876dbfb.png

2楼

2021-01-27 08:01

你是想要完整的代码呢?还是想要一个思路?

e6809ebec533ffa0d1d80591b36427a1.png

3楼

2021-01-27 07:12

///like this??

import javax.swing.*;

import java.awt.event.*;

import java.awt.*;

public class KeyFrame extends JFrame implements KeyListener {

private static final long serialVersionUID = 1L;

private Graphics g = null;

public KeyFrame() {

this.setBounds(300, 300, 400, 300);

this.setTitle("Move Painter");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setResizable(false);

this.setVisible(true);

g = this.getGraphics();

this.addKeyListener(this);

}

public static void main(String[] args) {

new KeyFrame();

}

public void keyPressed(KeyEvent e) {

handle(e);

}

public void keyReleased(KeyEvent e) {

repaint();

}

public void keyTyped(KeyEvent e) {

// handle(e);

}

public void handle(KeyEvent e){

Color c = g.getColor();

setBackground(Color.WHITE);

g.setColor(Color.RED);

int dir = e.getKeyCode();

switch (dir) {

case KeyEvent.VK_UP:

g.drawString("java程序设计", 150, 50);

break;

case KeyEvent.VK_DOWN:

g.drawString("java程序设计", 150, 250);

break;

case KeyEvent.VK_LEFT:

g.drawString("java程序设计", 50, 150);

break;

case KeyEvent.VK_RIGHT:

g.drawString("java程序设计", 250, 150);

break;

default:

g.drawString("java程序设计", 150, 150);

break;

}

g.setColor(c);

}

}

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值