提问者:小点点

在 JavaFX 中动态添加复选框


我试图用Java创建一个基于JavaFX的游戏预测系统。它包含一个包含游戏对象的HashMap,其中有一个包含参赛运动员的ArrayList。这两者都将由用户在运行时决定。只有特定类型的运动员才有资格参加特定类型的比赛,例如,游泳运动员只能参加游泳比赛。我可以通过将运动员的类型与游戏对象和运动员对象进行匹配来获得符合条件的运动员,但我如何在运行时为符合条件的运动员创建复选框?


共2个答案

匿名用户

您可以使用以下方法在运行时添加或删除复选框

package com.grsdev.stackoverflow.question170919.pack02;


import javafx.application.*;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
 * @author gaurav salvi
 *
 */
public class JavaFxCheckBoxDemo extends Application{

    private static VBox root;

    private static CheckBox box=new CheckBox("Apple");

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

    @Override
    public void start(Stage stage) throws Exception {

        root=new VBox();

        Button button=new Button("            toggle         ");

        button.setOnAction(JavaFxCheckBoxDemo::buttonClicked);

        root.getChildren().add(button);
        root.getChildren().add(box);

        Scene value=new Scene(root,200,200);

        stage.setScene(value);

        stage.show();

    }

    private static void buttonClicked(ActionEvent event){

        if(root.getChildren().contains(box)){
            root.getChildren().remove(box);
        }else{
            root.getChildren().add(box);
        }
    }

}

匿名用户

我认为,在Scene Builder中动态创建对象并根据它们的ID在控制器中链接它们是非常困难的,如果不是不可能的话。给定问题的一个可能的解决方法是添加几个静态对象并将它们的可见性设置为隐藏。随着运动员是如何创建的,并被添加到游戏对象中的ArrayList中,我更改了给定复选框的可见性。