1
ノードからコントローラインスタンスを取得する可能性がありますか?たとえば、タブのAnchorPane?ノードからコントローラインスタンスを取得
私は、私は別のコントローラをロードし、私はすでにロードされている
ノードからコントローラインスタンスを取得する可能性がありますか?たとえば、タブのAnchorPane?ノードからコントローラインスタンスを取得
私は、私は別のコントローラをロードし、私はすでにロードされている
Node
sがデフォルトでそれを作成するために使用されるFXMLファイルで使用されているコントローラに関する情報が含まれていないどのコントローラを検証したいと思いますいくつかのAnchorPanesを持っていますfxmlはシーンを作成する単なる方法なので、しかし、あなたはFXMLでuserData
/properties
に、このような情報を添付することができます:
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:id="AnchorPane" prefHeight="400.0" prefWidth="600.0" onMouseClicked="#click" fx:controller="fxml.FXMLController">
<!-- store controller as userData property -->
<userData>
<fx:reference source="controller" />
</userData>
<properties>
<!-- store controller at key "foo" in properties map -->
<foo><fx:reference source="controller" /></foo>
</properties>
</AnchorPane>
あなたがこれを行う場合、あなたは
を使用してこの種の情報を追加したノードに最も近い祖先でコントローラを検索することができますproperties
マップから情報を取得する
public static Object getController(Node node) {
Object controller = null;
do {
controller = node.getProperties().get("foo");
node = node.getParent();
} while (controller == null && node != null);
return controller;
}
またはから情報を取得するために
public static Object getController(Node node) {
Object controller = null;
do {
controller = node.getUserData();
node = node.getParent();
} while (controller == null && node != null);
return controller;
}
を使用してプロパティ。
おそらく情報を追加する方法は1つではなく、両方を追加するだけです。また、foo
をキーとして置き換える方が良いでしょう...
これはあなたにとって参考になるかもしれません。 [passing-parameters-javafx-fxml](http://stackoverflow.com/questions/14187963/passing-parameters-javafx-fxml/40193164#40193164) – CTN