如何自下而上在网格中添加对象?
How To Add Objects In Grid from Bottom Up?
我正在使用网格窗格视图通过 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;
}
}
}
输出:
您可以将每个图像添加到相对于底行的一行,即 data[x].length - 1
。
替换其中的每一个:
gridPane.add(imageView, x, y);
有了这个:
gridPane.add(imageView, x, data[x].length - 1 - y)
我正在使用网格窗格视图通过 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;
}
}
}
输出:
您可以将每个图像添加到相对于底行的一行,即 data[x].length - 1
。
替换其中的每一个:
gridPane.add(imageView, x, y);
有了这个:
gridPane.add(imageView, x, data[x].length - 1 - y)