javafx实用程序方法加载FXML文件

时间:2016-11-17 08:05:33

标签: java javafx

我有几个实例,我想加载相同的FXML文件以捕获一些信息。

理想情况下,这是开发实用程序方法的情况,即写入一次,多次使用。

这是一个当前示例,在类中使用 A id 0 0 -> begin and ends 1 1 0 -> begin and ends 2 2 0 -> begin 3 3 1 -> continue 3 4 2 -> ends 3 5 0 -> begin 4 6 1 -> ends 4 7 0 -> begin 5 8 1 -> continue 5 9 2 -> continue 5 10 3 -> continue 5 11 4 -> continue 5 12 5 -> continue 5 13 6 -> continue 5 14 7 -> ends 5 方法:

private

我有一个实用工具类(private ServiceEvent_NewController loadServiceEvent_Stage(Stage primaryStage) { ServiceEvent_NewController controller = null; try { FXMLLoader loader = new FXMLLoader(getClass().getResource("/View/ServiceEvent_New.fxml") ); Parent root = loader.load(); // Create the dialog Stage. Stage dialogStage = new Stage(); dialogStage.initModality(Modality.WINDOW_MODAL); dialogStage.initOwner(primaryStage); Scene scene = new Scene(root); dialogStage.setScene(scene); controller = loader.getController(); controller.setDialogStage(dialogStage); } catch (IOException npe) { String message = npe.getMessage(); System.out.println(message); } return controller; } ) 如果我尝试使用以下方法创建一个加载FXML的方法:

public final class LM_Utility

编译器抱怨public static ServiceEvent_NewController loadServiceEvent_Stage(Stage primaryStage)

有没有办法创建一个合适的实用工具方法来加载这些文件,所以我可以“写一次并多次使用”?

1 个答案:

答案 0 :(得分:1)

getClass()返回方法包含的运行时类。

如果您不需要使用相对于扩展类的位置的效果,则可以简单地替换

getClass()

LM_Utility.class

这是Class类的LM_Utility对象的表达式,这是getClass()在非静态方法中返回的对象,因为LM_Utility是{{ 1}}。

当然,您可能应该将fxml文件的资源路径传递给该方法,并且还使用包含final的接口或抽象类,而不是对对象类型进行硬编码。您可以使用类型参数setDialogStage来允许您使用实际控制器类型作为分配的目标。 (请注意,在运行时,此赋值仍将有效地包含对目标类型的强制转换。)