【问题标题】:Dynamically adding checkboxes in JavaFX在 JavaFX 中动态添加复选框
【发布时间】:2017-09-19 04:01:20
【问题描述】:

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

【问题讨论】:

  • 使用循环修改场景,ListViewTableView 或类似的...

标签: java javafx scenebuilder


【解决方案1】:

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

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

}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多