を使用して FXML ファイル内に複数のコントローラーを設定することはできません (fx:controller="")
。代わりに、コントローラーを手動で挿入することを検討してください。基本的に 2 つの方法があります。
FXMLファイル内のコントローラーに言及せずにsetControllerメソッドを使用する:
FXMLLoader loader = new FXMLLoader();
URL location = getClass().getClassLoader().getResource("fxml/ClientArea.fxml");
loader.setLocation(location);
loader.setController(new ClientArea());
// loader.setController(new Undecorator());
loader.load();
より適切には、setControllerFactoryメソッドを使用します。
最初に、両方のコントローラがファイルに記載されているインターフェイス (イベント ハンドラ メソッドを含む) を実装していることを確認してから、ファイルClientArea
からビューをロードするときにコントローラを選択します。Undecorator
Icontroller
FXML
(fx:controller="IController")
FXML
FXMLLoader loader= new FXMLLoader();
URL location = getClass().getClassLoader().getResource("fxml/ClientArea.fxml");
loader.setLocation(location);
loader.setControllerFactory(new Callback<Class<?>, Object>() {
public Object call(Class<?> p) {
return new ClientArea();
// return new Undecorator();
}
});
loader.load();