帮忙看看程序哪里出问题了,怎么修改?
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直接写的地址
代码没有问题
------解决方案--------------------我这边也能动啊。。。。