title: How to restart a JavaFX application when a button is clicked
body: <p>I went through almost every post here regarding the matter but most of them doesn't explain what to do properly. 
  To the question:</p>
  
  <p>I created a javaFX application, a dice game, human player vs. computer, but during any time while playing the game human player should be able to click button "new game" and what it should do is to restart the game from beginning. </p>
  
  <p>I tried relaunching the stage again but in javafx we cannot call the launch method twice.</p>
  
  <p><strong>1)Is there a way i can implement this without restarting the whole application?</strong></p>
  
  <p><strong>2)if not how can i restart the application completely using a button click?</strong></p>
  
  <p>Main class</p>
  
  <pre><code>public class Main {
  public static void main(String[] args) {
      GameUI gameUI = new GameUI();
  
      gameUI.launch(GameUI.class, args);
  
  }   
  </code></pre>
  
  <p>GameUI
  (i removed many codes from this class to make it short. codes that i think enough to give an idea is included. sorry if it is too long.)</p>
  
  <pre><code>public class GameUI extends Application  {
  
   //all btn and label declarations 
  //creating instances for necessary classes
  
  private Scene scene;
  
  @Override
  public void start(Stage primaryStage) throws Exception {
  
      //Displaying Dice for Player and Computer
      setLabelsPlyr(diesP);
      setLabels(diesC);
  
      btnThrow = new Button("Throw");
      btnThrow.setPrefSize(70, 40);
  
      //Throw action is performed
      btnThrow.setOnAction(e -&gt; {
  
      //setting and displaying dies
        DieClass[] com = getNewDiceArrC();  
        lblDiceOneC.setGraphic(new ImageView(diesC[0].getDieImageC()));
        //so on.....
  
        DieClass[] playerAr = getNewDiceArrP();
        lblDiceOnePlyr.setGraphic(new ImageView(diesP[0].getDieImageP()));
        //so on...
      });
  
      btnNewGame = new Button("New Game");
      btnNewGame.setOnAction(e -&gt; {
  
             **//WHAT TO DO HERE?????**
  
      });
  
      //setting layouts
  
  
      GridPane gridPane = new GridPane();
      gridPane.add(lblComputer, 0, 0);
      //so on.....
  
      Scene scene = new Scene(gridPane, 1100, 400);
      primaryStage.setScene(scene);
      primaryStage.setTitle("dice Game");
      primaryStage.show();
  
  }
  
  //some other methods
  public void setLabels(DieClass[] dies) {
      for (int i=0; i &lt; dies.length; i++) {
          lblDiceOneC = new Label();
          lblDiceOneC.setGraphic(new ImageView(dies[0].getDieImageC()));
          ++i;
         //so on.....
  
          break;
      }
  }
  
  public void setLabelsPlyr(DieClass[] dies){
      for (int i=0; i&lt;dies.length; i++) {
          lblDiceOnePlyr = new Label();
          lblDiceOnePlyr.setGraphic(new ImageView(dies[0].getDieImageP()));
          ++i;
          lblDiceTwoPlyr = new Label();
          //so on......
          break;
      }
  }
  </code></pre>
  
  <p>p.s I am very new to JavaFX and somewhat new to java programming. </p>