如何在选中/取消选中复选框时显示和隐藏图像?

时间:2018-06-16 20:54:27

标签: javafx checkbox imageview graphicscontext

我试图在这个javafx应用程序中有一些CheckBoxes可视化披萨上的成分。 Pizza是一个ImageView。但我不知道如何添加成分。让我们谈谈萨拉米香肠吧!

我的第一个想法是在我的CheckBox萨拉米香肠的setOnAction上做这个:( gc beeing my graphics context)

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

(我尝试在顶部添加另一个ImageView,但即便如此,它仍然是背景仍然显示的.png透明背景。所以我尝试了这个。因为我只会去奶酪,萨拉米香肠这个也很好。这是非常基本的,应该只是为了我的练习。)

然而,一旦取消选中此框,我如何让萨拉米香肠再次消失?我知道gc.clearRect(),但就是这样。我不知道如何在取消选中框时这样做。提前致谢

1 个答案:

答案 0 :(得分:3)

您可以通过将ImageView的{​​{1}}属性绑定到相应visible的{​​{1}}属性来实现此目的。

这是一个快速示例:

selected

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

  • 始终设置CheckBox对象的可见性,以匹配是否选择了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;只需将每个图像绑定到匹配的复选框。