我正在使用javaFX开发一个简单的LiteBrite游戏。使用颜色选择器,用户在GridPane上选择颜色和时钟,GridPane是矩形的集合。每次单击都会将该Rectangle的颜色更改为用户选择的颜色。但是,如果已经更改了矩形的颜色,我应该将颜色更改回原始颜色(黑色)。 我无法访问Node并将其转换为Rectangle(以检查颜色)。 这是我用来获取节点的方法:
private Node getNode(GridPane grid, int column, int row){
Node result = null;
for (Node node : grid.getChildren()) {
if (GridPane.getColumnIndex(node) == column
&& GridPane.getRowIndex(node) == row) {
result = node;
}
}
return result;
}
在start方法中,我调用上面的方法并保存节点:
Node node = getNode(grid,i,j);
此时,如果我尝试打印出节点,我没有问题。但是,在我将Node转换为Rectangle并尝试检查其颜色后,我得到一个NULLPointerException:
Rectangle rec = (Rectangle) node;
System.out.println(rec.getFill());
我做错了什么?任何帮助是极大的赞赏。提前谢谢。