JLabel随键盘上下左右移动

zjasd18asd 2010-06-02 09:11:24
窗口中显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘键代码的方法是e.getKeyCode(),上、下、左、右键的编码分别用常量VK_UP 、VK_DOWN 、VK_LEFT 、VK_RIGHT表示

刚学java 这个都不懂。。! 求答案 啊 ,万分感谢
...全文
378 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjasd18asd 2010-06-02
  • 打赏
  • 举报
回复
能动了。。最开始的JLabel 我设置了半天都在上面。。怎么不居中。
chosen0ne 2010-06-02
  • 打赏
  • 举报
回复

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.*;


public class Test extends JFrame implements KeyListener{

JLabel jb;
JPanel jp;
int x=200,y=200;
int increment=10;
public static void main(String[] args) {
// TODO Auto-generated method stub
Test ts=new Test();
}
public Test()
{

jb=new JLabel("java 程序设计");
//jb.addActionListener(this);
jp=new JPanel();
jb.setLocation(x, y);
jp.add(jb);
this.add(jp);
this.setSize(500,500);
this.setVisible(true);
this.addKeyListener(this);//没有添加事件监听器
}

@Override
public void keyPressed(KeyEvent e) {

// TODO Auto-generated method stub
switch(e.getKeyCode())
{
case KeyEvent.VK_LEFT:
x-=increment;//这里要同时更改标签的横纵坐标
break ;
case KeyEvent.VK_RIGHT:
x+=increment;
break ;

case KeyEvent.VK_UP:
y-=increment;
break;

case KeyEvent.VK_DOWN:
y+=increment;
break;
}
jb.setLocation(x,y);
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}


注意要为事件源添加监听器,否则不会监听该事件。这里是JPanel
zjasd18asd 2010-06-02
  • 打赏
  • 举报
回复
package NIITwork;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Random;
import javax.swing.*;


public class test extends JFrame implements KeyListener{

/**
*
*/

JLabel jb;
JPanel jp;
int x=50,y=30;
public static void main(String[] args) {
// TODO Auto-generated method stub
test ts=new test();

}
public test()
{

jb=new JLabel("java 程序设计");
//jb.addActionListener(this);
jp=new JPanel();
jp.add(jb);
jb.setLocation(x, y);
this.add(jp);
this.setSize(500,300);
this.setVisible(true);
}

@Override
public void keyPressed(KeyEvent e) {

// TODO Auto-generated method stub
switch(e.getKeyCode())
{
case KeyEvent.VK_LEFT:
jb.setLocation(x, y);
break ;
case KeyEvent.VK_RIGHT:
jb.setLocation(x, y);
break ;

case KeyEvent.VK_UP:
setLocation(x, y);
break;

case KeyEvent.VK_DOWN:
setLocation(x, y) ;
break;
}



}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub

}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub

}


}
我的代码 在这,可是动不了
kyousuke 2010-06-02
  • 打赏
  • 举报
回复
在JPanel添加键盘事件,根据按下的键(VK_UP,VK_DOWN,VK_LEFT,VK+RIGHT)修改JLabel的location属性
xiesisi3 2010-06-02
  • 打赏
  • 举报
回复
你把答案都给出来了.

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧