我试图在这个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(),但就是这样。我不知道如何在取消选中框时这样做。提前致谢
答案 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
;只需将每个图像绑定到匹配的复选框。