我已经尝试了很长一段时间来让它发挥作用并进行了大量研究,但我无法弄清楚为什么它没有发生:我的最终目标是得到一个 x x y 绿色方块的网格,当你点击在正方形上它会改变颜色。(这是一个更大项目的一部分)
现在我知道这可能是一种非常低效的方法,但是我尝试了不同的方法,但似乎没有任何效果。
在我的 Grid 类中,我有这个:
squares = new Square[width][height];
for (int i = 0; i < width; i++){
for (int j = 0; j < height; j++){
squares[i][j] = new Square(i,j);
frame.getContentPane().add(squares[i][j]);
}
}
这是我的 Square 课:
public class Square extends JLabel implements MouseListener{
private int x,y,width,height, mouseX,mouseY;
private Color colour = Color.GREEN;
public Square(int width, int height){
this.x = width*45;
this.y = height*45;
addMouseListener(this);
this.setBounds(x, y, 45, 45);
}
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
g2.setColor(colour);
g2.fillRect(x, y, 45, 45);
}
@Override
public void mouseClicked(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
if(mouseX > x && mouseX < x+45 && mouseY > y && mouseY < y+45){
if(colour.equals(Color.GREEN)){
colour = Color.RED;
} else{
colour = Color.GREEN;
}
repaint();
}
}
}
但是,当我运行代码时,我看到的只是第一个方块和最后一个方块;怎么会?
如果您有任何提示我可以如何更有效地完成此操作,请告诉并批评此代码。