【发布时间】:2021-11-06 00:17:34
【问题描述】:
我需要帮助来使用 JavaFX 编写基于 Windows 的应用程序。 我只是想显示或隐藏一些带有 if/else 条件的图像。 我真正想要的是这样的: 如果 x=1 则显示 image1 如果 x=2 他们显示 image2
我尝试了 setvisible() 和 setDisable() 方法来做到这一点,但它不起作用。
public class BoardSelection implements Initializable {
@FXML
public ImageView image1= new ImageView();
@FXML
public ImageView image2 = new ImageView();
public int batteryVariation(int x){
if(x=1){
image1.setVisible(true);
image2.setVisible(false);
}
if(x=2){
image2.setVisible(false);
image2.setVisible(true);
}
return x;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
}
我的 .fxml 文件代码是:
<ImageView fx:id="image1" fitHeight="60.0" fitWidth="30.0" layoutX="118.0" layoutY="227.0">
<image>
<Image url="@../img/image1.png" />
</image>
</ImageView>
<ImageView fx:id="image2" fitHeight="60.0" fitWidth="30.0" layoutX="191.0" layoutY="227.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../img/image2.png" />
</image>
</ImageView>
【问题讨论】:
-
1.请发帖minimal reproducible example。 2. 在尝试隐藏图像之前,您需要将其显示出来。我怀疑是不是。
image1由 FXML 构造,但随后被image1= new ImageView();覆盖。这同样适用于image2 -
使用您运行的实际代码发布minimal reproducible example。这甚至不编译。 (例如
if (x=1))。 -
",但它不起作用。"有什么不好的?图片不显示吗?程序不能编译吗?你怎么打电话给
batteryVariation? -
永远不要将
@FXML变量设置为新值,这些值由加载程序注入,您的应用程序代码永远不应更改或重新初始化。跨度>