2017-02-11 101 views
-1

需要在Java FX應用程序中處理非模態對話框和模態對話框的方法。JavaFX 8處理非模態對話框和模態對話框的方法

主要階段和對話階段必須合理,否則JavaFX將無法運行。

在接受用戶提供的輸入之前,所有模態對話框都需要驗證。
DRY應該全面生效。

爲了避免單體意大利麪代碼,SceneBuilder也應該發揮作用。

我已經搜遍了互聯網,但找不到任何這樣的JavaFX方法。

創建這種JavaFX方法需要考慮什麼?

生成的代碼包含什麼?

如何調用和使用這樣的方法?

回答

0

下面的評論部分的迴應。

/** 
    * @author Arch Brooks, CEO Brooks Computing Systems, LLC authored this 
    *   method.<br> 
    * 
    * @since February 8, 2017<br> 
    * 
    * @param panel 
    *   The fxml document to serve as the dialog. 
    * @param css 
    *   The cascading style sheet used by the dialog. 
    * @param caption 
    *   The dialog caption or title. 
    * @param moDal 
    *   Identifies modality true = modal otherwise non modal. <br> 
    *   <br> 
    *   This method should be placed in the primary java class. <br> 
    *   <br> 
    *   Place the following calling sequence in the start constructor 
    *   of the FX application. <br> 
    *   <br> 
    *   ShowTopFormDlg("Your.fxml", "Your.css", "Your Title", false); 
    *   <br> 
    *   <br> 
    *   Place the following calling sequence in the controller when a 
    *   modal dialog is desired. <br> 
    *   <br> 
    *   ShowTopFormDlg("Your.fxml", "Your.css", "Your Title", true); 
    *   <br> 
    *   <br> 
    *   Globals in the JavaFX class housing the start constructor are 
    *   as follows: <br> 
    *   <br> 
    *   public static FXMLLoader loader;<br> 
    *   public static Stage dialogStage;<br> 
    *   public static BorderPane page;<br> 
    *   private static BorderPane mainLayout;<br> 
    *   public static Scene scene;<br> 
    *   public static Stage dialogStage;<br> 
    *   public static Stage primaryStage;<br> 
    *   <br> 
    *   <br> 
    *   In any controller using this calling sequence the following 
    *   import is required. <br> 
    *   <br> 
    *   import com.bcs.FXDlgTest2.*; 
    */ 

    public static void ShowTopFormDlg(String panel, String css, String caption, Boolean moDal) { 
     loader = new FXMLLoader(); 
     loader.setLocation(TopForm_so.class.getResource(panel)); 
     if (moDal) { 
      dialogStage = new Stage(); 
      try { 
       page = loader.load(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } else { 
      try { 
       mainLayout = loader.load(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     if (moDal) { 
      scene = new Scene(page); 
     } else { 
      scene = new Scene(mainLayout); 
     } 
     scene.getStylesheets().add((TopForm_so.class.getResource(css).toExternalForm())); 
     if (moDal) { 
      dialogStage.setScene(scene); 
      dialogStage.setTitle(caption); 
      dialogStage.initModality(Modality.WINDOW_MODAL); 
      dialogStage.showAndWait(); 
     } else { 
      primaryStage.setScene(scene); 
      primaryStage.setTitle(caption); 
      primaryStage.show(); 
     } 
    }