java实现创建页面插入飞机图片并添加鼠标监听,使飞机随着鼠标移动,敌机从上往下从左往右飞
时间: 2024-04-10 10:31:43 浏览: 119
你可以使用Java Swing来实现创建页面并插入飞机图片,并添加鼠标监听器让飞机随着鼠标移动,同时让敌机从上往下、从左往右飞行。下面是一个示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PlaneGame extends JFrame {
private ImageIcon planeIcon;
private JLabel planeLabel;
private ImageIcon enemyIcon;
private JLabel enemyLabel;
private int enemyX = 0;
private int enemyY = 0;
public PlaneGame() {
// 创建窗口
setTitle("Plane Game");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setLayout(null);
// 加载飞机图片
planeIcon = new ImageIcon("plane.png");
planeLabel = new JLabel(planeIcon);
planeLabel.setSize(planeIcon.getIconWidth(), planeIcon.getIconHeight());
planeLabel.setLocation(0, 0);
// 加载敌机图片
enemyIcon = new ImageIcon("enemy.png");
enemyLabel = new JLabel(enemyIcon);
enemyLabel.setSize(enemyIcon.getIconWidth(), enemyIcon.getIconHeight());
enemyLabel.setLocation(enemyX, enemyY);
// 添加鼠标监听器
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
// 飞机跟随鼠标移动
int x = e.getX() - planeLabel.getWidth() / 2;
int y = e.getY() - planeLabel.getHeight() / 2;
planeLabel.setLocation(x, y);
}
});
// 添加定时器,让敌机从上往下、从左往右移动
Timer timer = new Timer(10, new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 敌机从上往下移动
enemyY += 1;
// 敌机从左往右移动
enemyX += 1;
// 边界检测,当敌机超出窗口范围时,重新回到起始位置
if (enemyX > getWidth()) {
enemyX = -enemyLabel.getWidth();
}
if (enemyY > getHeight()) {
enemyY = -enemyLabel.getHeight();
}
// 更新敌机位置
enemyLabel.setLocation(enemyX, enemyY);
}
});
timer.start();
// 添加飞机和敌机图片到窗口
getContentPane().add(planeLabel);
getContentPane().add(enemyLabel);
// 显示窗口
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new PlaneGame();
}
});
}
}
```
请将上面示例代码中的 "plane.png" 和 "enemy.png" 替换为你自己的飞机和敌机图片路径。运行代码后,会显示一个窗口,并且飞机会随着鼠标移动,敌机会从上往下、从左往右飞行。
阅读全文