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

编写小程序,在小程序窗口显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘代码的方法是e.getkeycode(),上,下,左,右键的... 编写小程序,在小程序窗口显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘代码的方法是 e.getkeycode(),上,下,左,右键的编码分别用常量VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT表示) 展开
 我来答
longhua828
2009-03-31 · TA获得超过114个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:144万
展开全部
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
aaronswon
2009-03-31 · TA获得超过3481个赞
知道大有可为答主
回答量:1863
采纳率:0%
帮助的人:1611万
展开全部
///////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);

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kevin_zcwen
2009-03-31 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:113万
展开全部
你可以把"Java程序设计"用一个JLabel来显示
显示的位置你可以通过setBounds来设定
你给这个JLabel加键盘事件
发生时判断是哪个键被按了,然后就修改JLabel的setBounds的四个参数就可以了,最后validate(),这样应该就差不多了,好运
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式