如何在复选框的 check/unchecking 上显示和隐藏图像?

How to show and hide Images on check/unchecking of a Checkbox?

我正在尝试在此 javafx 应用程序中使用几个 CheckBoxes 可视化比萨饼上的成分。披萨是一个 ImageView。但我不知道我将如何添加配料。让我们谈谈意大利腊肠吧!

我的第一个想法是在我的 CheckBox 香肠的 setOnAction 上执行此操作:(gc beeing 我的图形上下文)

                                    Image salami1 = new Image("salami.png");
                                    gc.setFill(new ImagePattern(salami1);
                                    gc.fillOval(250, 200, 60, 60);

(我尝试在顶部添加另一个 ImageView,但即使它是一个 .png 透明背景,背景仍然会显示。所以我尝试了这个。因为我只会去cheese, salami 这个也可以。这是非常基本的,应该只是为了我这边的练习。)

但是,如何在取消选中该框后使意大利腊肠再次消失?我知道 gc.clearRect() 但仅此而已。我对取消选中该框后如何执行此操作一无所知。提前致谢

您可以非常简单地通过将 ImageViewvisible 属性 绑定到适当的 CheckBoxselected 属性 ].

这是一个快速示例:

import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        // Just creating a sample interface
        VBox root = new VBox(5);
        root.setPadding(new Insets(5));
        CheckBox chkSalami = new CheckBox("Salami");
        ImageView imgSalami = new ImageView("salami.png");

        // Bind the salami image's "visible" property to the checkbox's "selected" property
        imgSalami.visibleProperty().bind(chkSalami.selectedProperty());

        root.getChildren().addAll(chkSalami, imgSalami);

        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }
}

重要的部分是装订线。这是该行执行的基本逻辑:

  • 始终设置 imgSalami 对象的可见性以匹配 chkSalami 是否被选中。

这意味着您无需在 CheckBox 中添加任何循环或 ChangeListener;只需将每个图像绑定到匹配的复选框即可。