2013-10-06 50 views
2

前的GUI我在Netbeans中7.3.1的使用JavaFX有點麻煩如何要求用戶輸入。我正在嘗試製作一款可以擲骰子的遊戲。該程序應該詢問用戶是否合理,以及其他信息(如邊數)以初始化骰子。點擊滾動按鈕時,它將滾動模具。JavaFX的:顯示

我的問題是,由於忽略了JavaFX的主要程序時,它會啓動一個圖形用戶界面,我不知道在哪裏(或如何)要求用戶在GUI上加載之前這些信息。

public class DiceGame extends Application { 

@Override 
public void start(Stage primaryStage) { 
    Button btn = new Button(); 
    btn.setText("Roll Die!"); 
    btn.setOnAction(new EventHandler<ActionEvent>() { 
     @Override 
     public void handle(ActionEvent event) { 
      // 
      // code for rolling a die goes here. 
     } 
    }); 

    StackPane root = new StackPane(); 
    root.getChildren().add(btn); 

    Scene scene = new Scene(root, 300, 250); 

    primaryStage.setTitle("Dice Game"); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

/** 
* The main() method is ignored in correctly deployed JavaFX application. 
* main() serves only as fallback in case the application can not be 
* launched through deployment artifacts, e.g., in IDEs with limited FX 
* support. NetBeans ignores main(). 
* 
* @param args the command line arguments 
*/ 


public static void main(String[] args) { 

    //ask user for n value to initialize a die object before the javafx ui is launched. 

    System.out.println("Is your die loaded or fair? *Input 1 for fair and 2 for loaded* "); 

    Scanner fair_or_loaded = new Scanner(System.in); //Determines fair or loaded die. 
    int input = fair_or_loaded.nextInt(); 

    if (input == 1) { 
     System.out.println("Input an N value for a fair die: "); 
     Scanner user_input = new Scanner(System.in); //Created a fair die. 
     int n = user_input.nextInt(); 
     Die D1 = new Die(n); //User created die. 

    } else { //Loaded die is created. Need Scanner for loadedSide and LoadFactor. 
     System.out.println("Input an N value for a loaded die: "); 
     Scanner loaded_n_input = new Scanner(System.in); 
     int loaded_n = loaded_n_input.nextInt(); //loaded n value created 

     System.out.println("Input a side to be loaded: "); 
     Scanner user_side = new Scanner(System.in); 
     int side_loaded = user_side.nextInt(); //loaded side created 

     System.out.println("Input a load factor: "); 
     Scanner user_load = new Scanner(System.in); 
     int factor_load = user_load.nextInt(); //load factor created 

     LoadedDie DL = new LoadedDie(loaded_n, side_loaded, factor_load); //Loaded die is created. 
    } 

    launch(args); 
    } 
} 

非常感謝!

回答

2

如該代碼的評論所述,JavaFX應用程序在正確啓動時不會像傳統的Java應用程序那樣使用main()方法 - 它們創建默認應用程序類的實例並調用其啓動方法。

所以,如果你想顯示GUI之前這段代碼執行,你必須在啓動方法的開頭來調用它。最好將相應的代碼放在一個單獨的方法中,然後在開始構建UI之前調用該方法。

+0

這解決了它!非常感謝您的幫助! – user2852171

+0

@ user2852171沒問題。 – berry120