接下来我们综合运用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();
}
}