我使用网格窗格视图使用add()方法填充网格。通过设计add(),网格从上到下填充了每一行,其中位置(0,0)在网格的最左端。然后在其下方附加更多行,依此类推。是否可以填充网格以使第一行位于底部并向上添加行,以便位置(0,0)位于左下方?要实现这一目标需要什么?香港专业教育学院看过GridPane中的不同方法,但找不到如何完成。我的直觉是我需要重写add()方法,但是我不确定如何实现此行为。
由于我正在处理图像,因此我不希望对此进行镜像。
为简单起见,以下是从类和辅助方法中提取的代码要点:
public enum LawnType
{
GRASS,
CRATER
}
lawnData = new LawnType[][] {
{CRATER,GRASS,GRASS,GRASS,GRASS,GRASS,},
{GRASS,GRASS,GRASS,GRASS,GRASS,GRASS,},
{GRASS,GRASS,GRASS,GRASS,GRASS,GRASS,},
{GRASS,GRASS,GRASS,GRASS,GRASS,GRASS,},
{GRASS,GRASS,GRASS,GRASS,GRASS,GRASS,},
{GRASS,GRASS,GRASS,GRASS,GRASS,GRASS,},
};
GridPane lawnViewer = new GridPane();
for (int x = 0 ; x < data.length ; x++) {
for (int y = 0 ; y < data[x].length ; y++) {
ImageView imageView;
switch(data[x][y]){
case GRASS:
imageView = new ImageView(new Image("mower/resources/longgrass1.png"));
imageView.setFitWidth(gridPixelSize);
imageView.setFitHeight(gridPixelSize);
gridPane.add(imageView,x,y);
break;
case CRATER:
imageView = new ImageView(new Image("mower/resources/crater.png"));
imageView.setFitWidth(gridPixelSize);
imageView.setFitHeight(gridPixelSize);
gridPane.add(imageView, x, y);
break;
default:
break;
}
}
}
答案 0 :(得分:1)
您可以在相对于最底行data[x].length - 1
的一行中添加每个图像。
替换每个:
gridPane.add(imageView, x, y);
与此:
gridPane.add(imageView, x, data[x].length - 1 - y)