求一个java小程序实现键盘按键移动,急急!!
编写小程序,在小程序窗口显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘代码的方法是e.getkeycode(),上,下,左,右键的...
编写小程序,在小程序窗口显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘代码的方法是 e.getkeycode(),上,下,左,右键的编码分别用常量VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT表示)
展开
3个回答
展开全部
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
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
展开全部
///////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);
}
}
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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以把"Java程序设计"用一个JLabel来显示
显示的位置你可以通过setBounds来设定
你给这个JLabel加键盘事件
发生时判断是哪个键被按了,然后就修改JLabel的setBounds的四个参数就可以了,最后validate(),这样应该就差不多了,好运
显示的位置你可以通过setBounds来设定
你给这个JLabel加键盘事件
发生时判断是哪个键被按了,然后就修改JLabel的setBounds的四个参数就可以了,最后validate(),这样应该就差不多了,好运
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询