哪位大师帮忙看看这个鼠标监听有什么问题啊?
希望能根据点击位置将数组对应位置的元素值设为1。
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class MainPanel extends JPanel {
private int map[][] = new int[16][10];
int width, height;
int a, b, d, a1;
public MainPanel(int width, int height) {
setSize(width, height);
this.width = width;
this.height = height;
a = (int) ((width * 0.8) / map.length);
b = (int) ((height * 0.8) / map[0].length);
d = a < b ? a : b;
a = (getWidth() - map.length * d) / 2;
a1 = d / 4;
b = (getHeight() - map[0].length * d) / 2;
addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
int x = e.getX();
int y = e.getY();
if ((y >= b) && (y <= (b + map[0].length * d))) {
if ((x >= a) && (x <= (a + map.length * d))) {
int tmp = y - b;
tmp /= (2 * d);
if (tmp % 2 == 1) {
map[(x - a + a1) / (2 * d)][tmp] = 1;
} else {
map[(x - a - a1) / (2 * d)][tmp] = 1;
}
}
}
}
}
});
}
@Override
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
if (j % 2 == 1) {
if (map[i][j] == 0) g2.drawOval(a + i * d - a1, b + j * d, d, d);
else if (map[i][j] == 1) g2.fillOval(a + i * d - a1, b + j * d, d, d);
} else {
if (map[i][j] == 0) g2.drawOval(a + i * d + a1, b + j * d, d, d);
else if (map[i][j] == 1) g2.fillOval(a + i * d + a1, b + j * d, d, d);
}
}
}
}
}