我有几个实例,我想加载相同的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)
。
有没有办法创建一个合适的实用工具方法来加载这些文件,所以我可以“写一次并多次使用”?
答案 0 :(得分:1)
getClass()
返回方法包含的运行时类。
如果您不需要使用相对于扩展类的位置的效果,则可以简单地替换
getClass()
与
LM_Utility.class
这是Class
类的LM_Utility
对象的表达式,这是getClass()
在非静态方法中返回的对象,因为LM_Utility
是{{ 1}}。
当然,您可能应该将fxml文件的资源路径传递给该方法,并且还使用包含final
的接口或抽象类,而不是对对象类型进行硬编码。您可以使用类型参数setDialogStage
来允许您使用实际控制器类型作为分配的目标。 (请注意,在运行时,此赋值仍将有效地包含对目标类型的强制转换。)