通过单击鼠标更改 JPanel 的颜色
Change the color of a JPanel with a Mouse-Click
如何使用鼠标单击事件更改 JPanel 的颜色?
public class Board extends JPanel{
public Board() {
setLayout(new GridLayout(8, 8));
setBackground(Color.white);
setPreferredSize(new Dimension(700, 700));
JPanel[][] squares = new JPanel[8][8];
for(int i = 0; i < squares.length; i++) {
for(int j = 0; j < squares[i].length; j++) {
squares[i][j] = new JPanel();
add(squares[i][j]);
squares[i][j].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent click) {
}
});
if(click.getsource() == squares[i][j]) {
squares[i][j].setBackground(Color.blue);
}
if((i+j)%2 == 0)
squares[i][j].setBackground(Color.white);
else
squares[i][j].setBackground(Color.black);
}
}
}
}
您应该将 if 语句移到 mouseClicked 方法中,如下所示:
final int iCopy = i;
final int jCopy = j;
@Override
public void mouseClicked(MouseEvent click) {
if ((iCopy+jCopy)%2==0) {
squares[iCopy][jCopy].setBackground(Color.white);
} else {
squares[iCopy][jCopy].setBackground(Color.black);
}
}
此外,我建议始终在 if 语句中使用 {}。否则您的代码可能会出现意外错误,因为:
if (true)
a += 1;
b += 2;
与
相同
if (true) {
a += 1;
}
b += 2;
这绝对不是你所期望的!
如何使用鼠标单击事件更改 JPanel 的颜色?
public class Board extends JPanel{
public Board() {
setLayout(new GridLayout(8, 8));
setBackground(Color.white);
setPreferredSize(new Dimension(700, 700));
JPanel[][] squares = new JPanel[8][8];
for(int i = 0; i < squares.length; i++) {
for(int j = 0; j < squares[i].length; j++) {
squares[i][j] = new JPanel();
add(squares[i][j]);
squares[i][j].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent click) {
}
});
if(click.getsource() == squares[i][j]) {
squares[i][j].setBackground(Color.blue);
}
if((i+j)%2 == 0)
squares[i][j].setBackground(Color.white);
else
squares[i][j].setBackground(Color.black);
}
}
}
}
您应该将 if 语句移到 mouseClicked 方法中,如下所示:
final int iCopy = i;
final int jCopy = j;
@Override
public void mouseClicked(MouseEvent click) {
if ((iCopy+jCopy)%2==0) {
squares[iCopy][jCopy].setBackground(Color.white);
} else {
squares[iCopy][jCopy].setBackground(Color.black);
}
}
此外,我建议始终在 if 语句中使用 {}。否则您的代码可能会出现意外错误,因为:
if (true)
a += 1;
b += 2;
与
相同if (true) {
a += 1;
}
b += 2;
这绝对不是你所期望的!