FXML,脚本标记和初始化方法

时间:2013-05-18 07:55:05

标签: java javascript javafx-2 fxml

我正在测试和发现JavaFX。

在JavaFX FXML documentation about controllers中,据说如果控制器有一个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控制器文件)?

2 个答案:

答案 0 :(得分:3)

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

有关示例,请参阅此fxml+JavaScript metronome application

答案 1 :(得分:1)

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

我不确定FXML脚本。