2013-10-06 48 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