通常のコントローラーに送信する多くのコントローラー メソッドを含む FXML ファイルがあります。しかし、私は最近、非常に些細なことを行ういくつかの小さなハンドラーを追加しており、代わりに FXML ファイル自体の JavaScript でそれらを実行できるかどうか疑問に思っていました。ただし、問題に遭遇したようです: javascript でコントローラー オブジェクトを取得する文書化された方法が見つかりません。javascriptでコントローラーオブジェクトを取得するにはどうすればよいですか? (いいえ、多くのオブジェクトにこれらのコントローラーがたくさんあるため、静的メソッドを使用できません)
Java を使用した現在のコード: FXML ファイル:
...
<GridPane fx:id="moveOverlay" onMouseClicked="#mouseOverlayClicked" ...>
....
そしてJavaコントローラー:
...
@FXML
private void mouseOverlayClicked(MouseEvent e)
{
if (e.getClickCount() > 1)
{
this.enableNestedEditing();
}
else if (e.isControlDown())
{
this.selectSelf();
}
}
...
必要な FXML:
...
<fx:script>
var controller = [what goes here?];
function mouseOverlayClicked(e) {
if (e.getClickCount() > 1) {
controller.enableNestedEditing();
else if (e.isControlDown()) {
controller.selectSelf();
}
</fx:script>
...
<GridPane fx:id="moveOverlay" onMouseClicked="mouseOverlayClicked" ...>
...
Java クラスに対応するイベント ハンドラはありません (他のメソッドは別として)。