javafx 2 javascript api - 获取 java Controller

标签 java javascript javafx-2 fxml

我有一个 FXML 文件,其中包含许多发送到普通 Controller 的 Controller 方法。但是,我最近一直在添加几个小处理程序,它们可以做一些非常琐碎的事情,并且想知道我是否可以在 FXML 文件本身的 javascript 中完成它们。但是,我似乎遇到了一个问题:我找不到在 javascript 中获取 Controller 对象的记录方式。如何在 javascript 中获取 Controller 对象? (不,我不能使用静态方法,因为我在很多对象上有很多这样的 Controller )

当前使用 Java 的代码: FXML 文件:

...
<GridPane fx:id="moveOverlay" onMouseClicked="#mouseOverlayClicked" ...>
....

和java Controller :

...
@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类中没有相应的事件处理程序(除了其他方法)

最佳答案

很简单,controller 已经在 fxml 的 javascript 部分定义了。所以 var controller = 不是必需的。

例子:

<?xml version="1.0" encoding="utf-8"?>

<?language javascript?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Button?>

<VBox xmlns:fx="http://javafx.com/fxml"
      fx:controller="fxmltest.SomeController">
    <fx:script>
        function buttonClicked() {
          controller.print("hallo");
        }
    </fx:script>
    <children>
        <Button text="John Doe" onAction="buttonClicked()"/>
    </children>
</VBox>

Controller :

package fxmltest;

import javafx.fxml.FXML;

public class SomeController {

  @FXML
  public void print(String s){
    System.out.println("from javascript: "+s);
  }
}

结果:

enter image description here

关于javafx 2 javascript api - 获取 java Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16137952/

相关文章:

java - 如何在java中使用随机数组和计时器?

java - 跟踪在 javafx 中绑定(bind)的节点的变化

java - 为什么我的 equals 方法不起作用?

java - 使用 org.apache.commons.io.FileUtils 时 Android 内存泄漏

javascript - 我用向上和向下箭头选择了表格行,但也希望能够单击它们

javascript - Chrome 扩展 : Communication between content script and background. html

java - 在另一个 Web View 控件中打开超链接

javafx-2 - 如何限制项目的可见性?

java - 调试 Maven 项目终止 JFrame 创建

javascript - 通知 API 总是返回被拒绝的 Chrome