2017-09-19 126 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中,我改變了給定複選框的可見性