用java设置一个鼠标监听 每按一次鼠标 画出对应的地图的GUI程序
时间: 2024-02-19 07:59:28 浏览: 18
好的,以下是一个基本的Java GUI程序,用于监听鼠标点击事件并画出对应的地图:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MapGUI extends JFrame implements MouseListener {
private int[][] map = { // 一个简单的地图
{1, 1, 1, 1, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 0, 0, 0, 1},
{1, 1, 1, 1, 1}
};
public MapGUI() {
setSize(500, 500); // 设置窗口大小
setTitle("Map GUI"); // 设置窗口标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗口时退出程序
addMouseListener(this); // 添加鼠标监听器
setVisible(true); // 显示窗口
}
public void paint(Graphics g) { // 重写paint方法,在窗口中绘制地图
super.paint(g);
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[i].length; j++) {
if (map[i][j] == 1) {
g.fillRect(j * 100, i * 100, 100, 100); // 绘制障碍物
} else {
g.drawRect(j * 100, i * 100, 100, 100); // 绘制空地
}
}
}
}
public void mouseClicked(MouseEvent e) { // 鼠标点击事件
int row = e.getY() / 100; // 计算点击位置在地图中的行
int col = e.getX() / 100; // 计算点击位置在地图中的列
if (map[row][col] == 0) { // 如果点击的是空地,则将其变成障碍物
map[row][col] = 1;
} else { // 如果点击的是障碍物,则将其变成空地
map[row][col] = 0;
}
repaint(); // 重新绘制窗口
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public static void main(String[] args) {
new MapGUI();
}
}
```
这个程序创建了一个大小为500x500的窗口,在窗口中绘制了一个简单的地图,包含了一些障碍物和一些空地。当用户点击鼠标时,程序会检查点击的位置是否是空地或障碍物,并将其相应的状态进行切换。然后程序会重新绘制窗口,以显示更新后的地图。
注意:这只是一个基本的程序示例,您可以根据自己的需求和喜好进行修改和扩展。