日期:2014-05-20  浏览次数:20621 次

帮忙看看程序哪里出问题了,怎么修改?
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小图标由键盘控制移动,为什么移动不了。是少了什么东西吗?

------解决方案--------------------
Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。final成员变量表示常量,只能被赋值一次,赋值后值不再改变。
------解决方案--------------------
你好,我在eclipse实验了你的代码,如果你的代码意思是“按方向键,然后图像随之移动”的话,不好意思,我运行没有报错,然后运行结果也正常,没有出现你所说的,我建议你在试试。
------解决方案--------------------
运行了楼主的代码
可以正常运行
本人是ImageIcon icon = new ImageIcon(url); 
url直接写的地址
代码没有问题
------解决方案--------------------
我这边也能动啊。。。。