2

我正在测试和发现 JavaFX。

在有关控制器的 JavaFX FXML 文档中,据说如果控制器有public void initialize()方法,则在加载 FXML 图形后调用它。

是否可以以脚本方式从 FXML 文件中执行类似的操作?我尝试了类似的方法,但initialize()根本没有被调用。

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

<?language javascript?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.AnchorPane?>

<AnchorPane xmlns:fx="http://javafx.com/fxml">

    <fx:script>
    importClass(java.lang.System);

    function initialize() {
        System.out.println('hello');
    }  
    </fx:script>

    <Button text="Button" />

</AnchorPane>

我错过了什么,还是无法从 FXML 文件中做到这一点?

是否有一种解决方法,以便 FXML 文件可以嵌入一些代码,这些代码将在加载后自动执行(不使用外部 Java 控制器文件)?

4

2 回答 2

3

我认为 fxml 中的脚本将像在 HTML 中一样内联执行。因此,您不要将要执行的脚本语句放在任何函数中。

有关示例,请参阅此fxml+JavaScript 节拍器应用程序

于 2013-05-18T23:08:42.180 回答
1

控制器还必须实现 javafx.fxml.Initializable 接口。用于调用初始化方法。控制器的代码示例显示了这一点,但描述不是很清楚。

我不确定 FXML 脚本。

于 2013-05-18T09:00:27.553 回答