JavaFX图像未显示



我已经将4个ImageView变量声明为全局变量,然后在方法loadImgs()中实例化它们

private ImageView image_1, image_2, image_3, image_4 ;
private void loadImgs()
{
image_1 = new ImageView(new Image("img1.jpg")) ;
image_1.setFitWidth(sceneWidth) ;
image_1.setFitHeight(sceneHeight) ;
image_1.setCache(true) ;
image_2 = new ImageView(new Image("img2.jpg")) ;
image_2.setFitWidth(sceneWidth) ;
image_2.setFitHeight(sceneHeight) ;
image_2.setCache(true) ;
image_3 = new ImageView(new Image("img3.jpg")) ;
image_3.setFitWidth(sceneWidth) ;
image_3.setFitHeight(sceneHeight) ;
image_3.setCache(true) ;
image_4 = new ImageView(new Image("img4.jpg")) ;
image_4.setFitWidth(sceneWidth) ;
image_4.setFitHeight(sceneHeight) ;
image_4.setCache(true) ;
image_4 = new ImageView(new Image("img4.jpg")) ;
image_4.setFitWidth(sceneWidth) ;
image_4.setFitHeight(sceneHeight) ;
image_4.setCache(true) ;
}

所有图像都与源代码位于同一文件夹中。

loadImgs()方法在一开始就被调用。稍后,我用其他方法将实例化的ImageView添加到Layouts中,这些方法被添加到新的Scene中,如下所示。

StackPane stackPane = new StackPane() ;
stackPane.getChildren().addAll(image_4, b_pane) ;
scene_4 = new Scene(stackPane, sceneWidth, sceneHeight) ;
window.setScene(scene_4) ;

大约有4个Scene,每个CCD_。然而,仅示出了前两个(即图像_1和图像_2(,而未示出其他两个。

我不太确定出了什么问题。我该如何解决这个问题?这里的问题是什么?

我注意到您有两个image_4实例,所以您要么有5个映像,要么有一个不需要的实例。此外,您还可以创建一个StackPane,它将其子项一个接一个地添加,其z顺序由子项列表的顺序定义。我不知道b_pane是什么,但我认为b_pane中有图像1-4和一个单独添加的img_4。

如何解决这个问题?

您可能希望创建一个常规窗格,而不是StackPane、GridPane或其他窗格。我建议使用常规窗格,但您可以根据需要选择另一个窗格。

此外,必须将每个子项都添加到父项中,才能将它们全部显示在窗格中。

最后,当你声明image_4时,它并没有真正改变你再次声明的任何东西,它很丑陋,但它很好。

以下是我对图像的看法:

private void loadImgs()
{
image_1 = new ImageView(new Image("img1.jpg")) ;
image_1.setFitWidth(sceneWidth) ;
image_1.setFitHeight(sceneHeight) ;
image_1.setCache(true) ;
image_2 = new ImageView(new Image("img2.jpg")) ;
image_2.setFitWidth(sceneWidth) ;
image_2.setFitHeight(sceneHeight) ;
image_2.setCache(true) ;
image_3 = new ImageView(new Image("img3.jpg")) ;
image_3.setFitWidth(sceneWidth) ;
image_3.setFitHeight(sceneHeight) ;
image_3.setCache(true) ;
image_4 = new ImageView(new Image("img4.jpg")) ;
image_4.setFitWidth(sceneWidth) ;
image_4.setFitHeight(sceneHeight) ;
image_4.setCache(true) ;
}
}

这就是我在你的主要方法中使用的,或者你在中放入最后一点代码的方法

Pane pane = new Pane() ;
pane.getChildren().addAll(image_1, image_2, image_3, image_4, b_pane) ;
// Add the b_pane only if necessary. Don't add it if it contains image_1/2/3/4
Scene scene_4 = new Scene(pane, sceneWidth, sceneHeight) ;
window.setScene(scene_4) ;

如果你有任何问题,请随时提出,我很乐意帮助你。

相关内容

  • 没有找到相关文章

最新更新