Java 鼠标单击时如何获取二维数组中的元素位置?
Im使用GUI构建棋盘(可能是棋盘游戏)。我已经创建了2D阵列,使细胞像五子棋游戏。我想做这个功能:每当我点击一个单元格,就会显示单元格的位置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 &
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 < /代码>。