如何在 JavaFX 中操作 GridPane 的子项?

我使用 JavaFX 制作了一个棋盘,并将所有图块设置为 GridPane 的子项,有没有办法可以访问这些图块并使用 GridPane 索引更改它们的属性?


我试图通过瓷砖矩阵访问它来更改一个瓷砖的颜色属性,但它不会更改 GridPane 中显示的瓷砖。


.getChildren() 方法返回一个节点列表,一旦它成为节点,我就无法访问 tile 对象的方法。


这是我的瓷砖类:


package chess.Board;


import static chess.Chess.TILE_W;

import static chess.Chess.TILE_Y;

import javafx.scene.paint.Color;

import javafx.scene.shape.Rectangle;


public class Tile extends Rectangle{


private final int width = TILE_W;

private final int height = TILE_Y;

private final int x;

private final int y;

private Color color;


public void setColor(Color color) {

    this.color = color;

}


public Color getColor(){


    return this.color;


}


public Tile(Color c, int x, int y){


    this.color = c;

    this.x = x;

    this.y = y;


    setFill(c);

    setHeight(this.height);

    setWidth(this.width);

    relocate(x*TILE_W, y*TILE_Y);


}

}


喵喔喔
浏览 283回答 1
1回答

jeck猫

通过矩阵访问图块是可以的,但使用 getChildren() 也可以:您只需将节点类型转换为图块。除非更改Tile的填充属性(继承自 Shape),否则瓷砖的颜色不会改变。Tile 的构造函数确实调用了 setFill(),但 setColor() 没有。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java