窗口中显示字符串“java程序设计”,按下键盘上的箭头键,可按照箭头方向移动(提示:得到键盘键代码的方法是e.getKeyCode(),上、下、左、右键的编码分别用常量VK_UP 、VK_DOWN 、VK_LEFT 、VK_RIGHT表示刚学java  这个都不懂。。!  求答案 啊  ,万分感谢

解决方案 »

  1.   

    在JPanel添加键盘事件,根据按下的键(VK_UP,VK_DOWN,VK_LEFT,VK+RIGHT)修改JLabel的location属性
      

  2.   

    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

    }
    }
    我的代码  在这,可是动不了
      

  3.   


    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
      

  4.   

    能动了。。最开始的JLabel 我设置了半天都在上面。。怎么不居中。