1
我有一些通用FXML与许多组件,但让我们说它是一个textArea为简单起见。Java重用通用FXML
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TextArea?>
<TextArea fx:id="test" prefHeight="200.0" prefWidth="200.0" promptText="test data" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1" />
而在此textArea上,您可以看到它有一个“test”标识。
所以我的问题是你可以重复使用这个FXML在多于一个控制器?
我最初的想法是通过一个通用控制器,如下图所示:
public abstract class GenericController {
Program program = Program.getInstance();
@FXML TextArea test;
@FXML
abstract void initialize();
abstract void setData();
}
,并指出了FXML到GenericController。 然后延伸它在一个更具体的控制器。但我只是得到一个LoadExceptionError错误在fx:controller =“sample.Controllers.GenericController”。
有更先进的东西,你可以使用控制器的工厂做的,(其中,例如,你可以用一个依赖注入框架结合起来),如果你需要,但它听起来像这将足以满足你的需求。 –
刚刚试过这个,我仍然得到'javafx.fxml.LoadException:没有指定控制器.' – audittxl
@audittxl然后你做错了什么。你正在调用无参数的load()方法,不是静态的'load(URL)'方法吗? –