接下来我们综合运用GUI所学的知识,创建一个窗口,设置好窗口的属性,接着在窗口上添加一个标签,再在标签上添加一个所需的照片,通过对键盘上下左右键的监听,实现通过键盘控制飞机图片上下左右移动的功能
import javax.swing.*; import java.awt.*; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.net.URL; public class Plane1 extends JFrame { private int x = 900; //设置图片的初始坐标位置x,y private int y = 900; public Plane1(){ this.setSize(500,500); //设置窗口的初始大小 this.setLocationRelativeTo(null); //设置窗口位置为居中 this.setTitle("飞机"); //设置窗口的标题为"飞机" this.setBackground(new Color(255,255,255)); //设置窗口的背景颜色为白色 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗口的关闭方式 this.setIconImage(new ImageIcon("j20.jpg").getImage()); //设置窗口的图标 JPanel jp1 = new JPanel(null); //new一个面板 jp1.setBackground(Color.white); //设置面板的背景颜色为白色 JLabel jLabel = new JLabel(); //在面板上面设置一个标签 jLabel.setSize(50,85); //设置标签的初始大小 jLabel.setLocation(x,y); //设置标签的初始位置 URL u1 = Plane1.class.getResource("j20.jpg"); //此段为给标签添加一个可以设置图片大小的方法 ImageIcon i1 = new ImageIcon(u1); Image image1 = i1.getImage(); Image sc1 = image1.getScaledInstance(50, 85, Image.SCALE_DEFAULT); ImageIcon imageIcon1 = new ImageIcon(sc1); jLabel.setIcon(imageIcon1); jp1.add(jLabel); //将标签添加到面板上 this.addKeyListener(new KeyAdapter() { //设置键盘的监听方法 @Override public void keyPressed(KeyEvent e) { //重写键盘按压操作keyPressed() if (e.getKeyCode()==KeyEvent.VK_UP){ //按压上键图片上移10个像素 y=y-10; jLabel.setLocation(x,y); } if (e.getKeyCode()==KeyEvent.VK_DOWN){ y=y+10; jLabel.setLocation(x,y); } if (e.getKeyCode()==KeyEvent.VK_LEFT){ x=x-10; jLabel.setLocation(x,y); } if (e.getKeyCode()==KeyEvent.VK_RIGHT){ x=x+10; jLabel.setLocation(x,y); } } }); this.add(jp1); //将面板添加到窗口 this.setVisible(true); //将该语句放在最后一行,设置将面板显示出来 } public static void main(String[] args) { new Plane1(); } }