如何使用 javafx 显示或隐藏图像
How show or hide images in condition with javafx
我需要帮助来使用 JavaFX 编写基于 windows 的应用程序。
我只是想显示或隐藏一些具有 if/else 条件的图像。
我真正想要的是这样的:
如果 x=1 则显示图像 1
如果 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>
在 if 语句中,您使用了赋值运算符 (=) 而不是比较运算符 == 。
public int batteryVariation(int x) {
if (x == 1) {
image1.setVisible(true);
image2.setVisible(false);
}
if (x == 2) {
image1.setVisible(false);
image2.setVisible(true);
}
return x;
}
工作代码示例:
public class PicturesTestController implements Initializable {
@FXML
private TextField tf_testInput;
@FXML
private ImageView image1;
@FXML
private ImageView image2;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
image2.setVisible(false);
tf_testInput.setOnAction(actionEvent -> batteryVariation(Integer.parseInt(tf_testInput.getText())));
}
public int batteryVariation(int x) {
if (x == 1) {
image1.setVisible(true);
image2.setVisible(false);
}
if (x == 2) {
image1.setVisible(false);
image2.setVisible(true);
}
return x;
}
}
总之还是用setImage()
的方法把set/change张图片放在ImageView
.
https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/ImageView.html
我需要帮助来使用 JavaFX 编写基于 windows 的应用程序。 我只是想显示或隐藏一些具有 if/else 条件的图像。 我真正想要的是这样的: 如果 x=1 则显示图像 1 如果 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>
在 if 语句中,您使用了赋值运算符 (=) 而不是比较运算符 == 。
public int batteryVariation(int x) {
if (x == 1) {
image1.setVisible(true);
image2.setVisible(false);
}
if (x == 2) {
image1.setVisible(false);
image2.setVisible(true);
}
return x;
}
工作代码示例:
public class PicturesTestController implements Initializable {
@FXML
private TextField tf_testInput;
@FXML
private ImageView image1;
@FXML
private ImageView image2;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
image2.setVisible(false);
tf_testInput.setOnAction(actionEvent -> batteryVariation(Integer.parseInt(tf_testInput.getText())));
}
public int batteryVariation(int x) {
if (x == 1) {
image1.setVisible(true);
image2.setVisible(false);
}
if (x == 2) {
image1.setVisible(false);
image2.setVisible(true);
}
return x;
}
}
总之还是用setImage()
的方法把set/change张图片放在ImageView
.
https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/ImageView.html