import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;public class KeyDemo extends JFrame {       
    public static void main(String args[]) {
        KeyDemo frame = new KeyDemo();      //创建本类对象
        frame.setVisible(true);             //设置窗体为可视状态
    }    
    public KeyDemo() {
        super();
        getContentPane().setLayout(null);    //设置窗体为布局方式
        setBounds(100, 100, 257, 160);  //设置窗体大小与显示位置
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        final JPanel panel = new JPanel();  //创建面板对象
        panel.setLayout(null);          //设置面板为绝对布局
        panel.setBounds(0, 0, 249, 126);
        getContentPane().add(panel);    //将面板添加到
        final JButton button = new JButton();   //创建按钮对象
        button.addKeyListener(new KeyAdapter() {    //为按钮添加键盘事件
            public void keyPressed(final KeyEvent e) {
                String dir = KeyEvent.getKeyText(e.getKeyCode());   //获取用户的按键信息
                int x = button.getX();      //获取按钮的横坐标
                int y = button.getY();      //获取按钮的纵坐标
                if (dir.equals("Right")) {  //如果用户按下的是右键
                    x += 2;             //定义横坐标
                }
                if (dir.equals("Left")) {   //如果用户按下的左键
                    x -= 2;
                }
                if (dir.equals("Down")) {   //判断用户是否按向下键
                    y += 2;
                }
                if (dir.equals("Up")) {     //判断用户是否按向上键
                    y -= 2;
                }
                button.setLocation(x, y);   //重新定义按钮坐标位置
            }
        });
        button.setContentAreaFilled(false); //设置不填充按钮区域
        button.setBorder(null);             //不显示按钮边框
        URL url = getClass().getResource("pig.png");    //定义图片的URL地址
        ImageIcon icon = new ImageIcon(url);    //根据URL地址创建图片对象
        button.setIcon(icon);               //设置按钮的显示图片
        button.setBounds(45, 48, 40, 39);   //设置按钮的显示位置与大小
        panel.add(button);              //将按钮添加到面板中
    }
}
程序实现pig小图标由键盘控制移动,为什么移动不了。是少了什么东西吗?

解决方案 »

  1.   

    Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
      

  2.   

    你好,我在eclipse实验了你的代码,如果你的代码意思是“按方向键,然后图像随之移动”的话,不好意思,我运行没有报错,然后运行结果也正常,没有出现你所说的,我建议你在试试。
      

  3.   

    我是用的eclipse,结果是出现了窗体,但是窗体里面的图标按方向键移动不了,不知道是怎么了。
      

  4.   

    运行了楼主的代码
    可以正常运行
    本人是ImageIcon icon = new ImageIcon(url); 
    url直接写的地址
    代码没有问题