求一个java小程序实现键盘按键移动,急急!!
mip版 关注:184 答案:4 悬赏:20
解决时间 2021-01-27 20:18
已解决
2021-01-27 05:10
编写小程序,在小程序窗口显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘代码的方法是 e.getkeycode(),上,下,左,右键的编码分别用常量VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT表示)
最佳答案
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
全部回答
1楼
2021-01-27 08:48
你可以把"Java程序设计"用一个JLabel来显示
显示的位置你可以通过setBounds来设定
你给这个JLabel加键盘事件
发生时判断是哪个键被按了,然后就修改JLabel的setBounds的四个参数就可以了,最后validate(),这样应该就差不多了,好运
2楼
2021-01-27 08:01
你是想要完整的代码呢?还是想要一个思路?
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);
}
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上信息!
推荐资讯
大家都在看