需要在Java FX应用程序中处理非模态和模态对话框的方法。
主要和对话阶段必须合理,否则JavaFX将无法运行。
在接受用户提供的输入之前,所有模态对话框都需要验证 DRY应该完全有效。
为了避免单片意大利面条代码,SceneBuilder也应该起作用。
我已经浏览过互联网,但找不到任何这样的JavaFX方法。
创建这样的JavaFX方法需要哪些注意事项?
结果代码包含什么?
如何调用和使用这种方法?
答案 0 :(得分: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();
}
}