我使用这种格式将图像作为背景图片放置。
final VBox mainroot = new VBox();
mainroot.getChildren().addAll(backbutton,heroship);
final StackPane mainstackPane = new StackPane();
mainstackPane.getChildren().addAll(iv2,mainroot);
final HBox hbox = new HBox(mainstackPane);
iv2是我的图像iteself,像这样创建
final Image imagegame = new Image(bcolor,width,height, false, false);
ImageView iv2 = new ImageView();
iv2.setImage(imagegame);
iv2.setPreserveRatio(true);
iv2.setFitWidth(width);
iv2.setFitHeight(height);
同样,我正在使用数组和for循环添加一定数量的Labels,
Label[] alienship = new Label[10];
for (int i=0;i<alienship.length;i++)
{
mainroot.getChildren().add(alienship[i]);
}
我的问题是,每当我更改标签大小的数组时,从10到20,图像本身向下移动,我将不得不将其翻译为适合。
我尝试过同时使用VBox和HBox但我无法看到我的结果有所不同。
我也试过使用.setFitWidth()和.setFitHeight(),但没有任何帮助。
使用Label [] alienship = new Label [10]; 结果:http://puu.sh/eAihN/c5c7f38ef0.jpg (在这种情况下,我会使用.setTranslate将其重新对齐。
使用Label [] alienship = new Label [20]; 结果:http://puu.sh/eAiqz/3b4280b63b.jpg
无论我将数组设置为什么尺寸,我该怎么做才能解决这个问题并确保它保持对齐状态?
感谢。
答案 0 :(得分:0)
<强>问题强>
问题不在于ImageView,而在于您选择添加heroship
和alienship
的布局/容器。
VBox
是一种布局,其高度取决于孩子的数量和每个孩子的身高。当alienship
的数量增加时,VBox height
会增加以容纳所有孩子。
<强>解决方案强>
您必须考虑可以添加任意数量子项的布局,而不会影响容器的宽度和高度。考虑StackPane
快速修复是将VBox作为StackPane的父级。将Image和space space添加到StackPane,然后将Button和StackPane添加到VBox。最后将VBox添加到您的HBox中。
final StackPane mainstackPane = new StackPane();
mainstackPane.getChildren().addAll(iv2, heroship);
final VBox mainroot = new VBox();
mainroot.getChildren().addAll(backbutton, mainstackPane);
final HBox hbox = new HBox(mainroot);
将所有外国人添加到StackPane,而不是将其添加到VBox
Label[] alienship = new Label[10];
for (int i=0;i<alienship.length;i++)
{
mainstackPane.getChildren().add(alienship[i]);
}