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

加载FXML文件的javafx实用程序方法,java,javafx,Java,Javafx,我有几个实例希望加载相同的FXML文件以捕获一些信息 理想情况下,这将是开发实用方法的一个案例,即编写一次,使用多次 这是一个当前示例,在类中使用private方法: private ServiceEvent_NewController loadServiceEvent_Stage(Stage primaryStage) { ServiceEvent_NewController controller = null; try { FXMLLoader loa

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

理想情况下,这将是开发实用方法的一个案例,即编写一次,使用多次

这是一个当前示例,在类中使用
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;
}
我有一个实用程序类(
公共最终类LM_实用程序
)。
如果我尝试在此处创建加载FXML的方法,请使用:

public static ServiceEvent_NewController loadServiceEvent_Stage(Stage primaryStage) 
编译器抱怨“无法从静态上下文引用非静态方法getClass()”

有没有办法创建一个合适的实用程序方法来加载这样的文件,这样我就可以“编写一次并多次使用”

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

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

getClass()

这是
LM_实用程序
类的
Class
对象的表达式,这是
getClass()
将在非静态方法中返回的,因为
LM_实用程序
final


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

您是否尝试过ServiceEvent_NewController.class.getResource(“…”)?
LM_Utility.class