2017-09-19 128 views
2

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

+0

使用一个循环来修改场景,一个ListView或一个TableView或类似的东西...... – fabian

回答

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

} 
0

我认为,动态创建的场景生成器对象,并在控制器连接他们自己的ID的基础上,如果将非常困难不是不可能的。对于给定的问题的一个可能的解决方法是增加几个静态对象,并设置自己的知名度作为运动员的创建方式以及如何将其添加到Game对象中的ArrayList中,我改变了给定复选框的可见性