Java 鼠标单击时如何获取二维数组中的元素位置?

Java 鼠标单击时如何获取二维数组中的元素位置?,java,arrays,swing,position,mouselistener,Java,Arrays,Swing,Position,Mouselistener,Im使用GUI构建棋盘(可能是棋盘游戏)。我已经创建了2D阵列,使细胞像五子棋游戏。我想做这个功能:每当我点击一个单元格,就会显示单元格的位置 private Cell[][] cells; private in row; private int col; Update: ....... JPanel pn = new JPanel(new GridLayout(row, col, 0, 0)); cells = new Cell[row][col]; for (int i = 0; i &

Im使用GUI构建棋盘(可能是棋盘游戏)。我已经创建了2D阵列,使细胞像五子棋游戏。我想做这个功能:每当我点击一个单元格,就会显示单元格的位置

private Cell[][] cells;
private in row;
private int col;

Update:
.......

JPanel pn = new JPanel(new GridLayout(row, col, 0, 0));
cells = new Cell[row][col];
for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            pn.add(cells[i][j] = new Cell());
        }
......
private class MouseListener extends MouseAdapter {

        public void mouseClicked(MouseEvent e) {
                    for (int i = 0; i < size; i++) {
                        for (int j = 0; j < size; j++) {
                            if (         ) {
                                System.out.println("X: " + i + ", Y: " + j);

                            }

                        }
                    }
            }
private Cell[][]小区;
列兵;
私人国际学院;
更新:
.......
JPanel pn=新的JPanel(新的网格布局(行、列、0、0));
单元格=新单元格[行][列];
对于(int i=0;i

虽然我在
if
中尝试了多次不同的条件,但我无法使其工作。在
if
语句中应该有一个命中测试函数调用。命中测试函数应该从鼠标坐标转换为当前(I,j)的单元格坐标定位,并返回一个简单的
true
false
(一旦得到
true
,就可以退出这两个循环。)

但是,您不会显示如何绘制网格。如果网格从某个位置(xp,yp)开始,并且每个单元格都有高度
h
和宽度
w
,则可以轻松地将鼠标坐标直接转换为单元格坐标:

cellx = (mousex - xp)/w
celly = (mousey - yp)/h

…当cellx、celly<0或>=大小表示在网格外单击时。

在不太了解屏幕内容的情况下,我们可以应用以下内容。只要画布边缘到渲染单元格的位置没有偏移,就可以使用“跟随”,如果有偏移,则需要将其添加到x、y坐标中

int x = 201;  //You would use e.getX();
int y = 10;   //You would use e.getY();

int xWidth = 50;
int yWidth = 50;

//Divide by the width to get the array position
int xIndex = (int)Math.floor(x / xWidth);
int yIndex = (int)Math.floor(y / yWidth);

您可以直接将您的<代码> MouseListener <代码>添加到单元格中,并使用<代码> E.GETSoCube()/Cyto>获得单击的单元格。

您可以显示一些<代码>是否已经尝试过条件?也可以考虑,也许使用<代码> JToggleButton < /代码>。