如何在复选框的 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() 但仅此而已。我对取消选中该框后如何执行此操作一无所知。提前致谢
您可以非常简单地通过将 ImageView
的 visible
属性 绑定到适当的 CheckBox
的 selected
属性 ].
这是一个快速示例:
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
;只需将每个图像绑定到匹配的复选框即可。
我正在尝试在此 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() 但仅此而已。我对取消选中该框后如何执行此操作一无所知。提前致谢
您可以非常简单地通过将 ImageView
的 visible
属性 绑定到适当的 CheckBox
的 selected
属性 ].
这是一个快速示例:
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
;只需将每个图像绑定到匹配的复选框即可。