在JavaFX中动态添加复选框

时间:2017-09-19 04:01:20

标签: java javafx scenebuilder

我正在尝试使用基于JavaFX的GUI使用场景构建器在Java中创建游戏预测系统。它包含一个包含游戏对象的HashMap,其中有一个包含参与运动员的ArrayList。两者都将由用户在运行时决定。只有某种类型的运动员才有资格参加某种类型的比赛,例如,游泳运动员将只能参加游泳比赛。我可以通过将他们的类型与游戏对象和运动员对象相匹配来获得符合条件的运动员,但是如何创建复选框(对于符合条件的运动员在运行时?

2 个答案:

答案 0 :(得分:0)

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

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);
        }
    }

}

答案 1 :(得分:0)

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