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