我正在测试和发现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控制器文件)?
答案 0 :(得分:3)
我认为fxml中的脚本只是像HTML一样内联执行。因此,您不要将脚本语句放在任何函数中执行。
有关示例,请参阅此fxml+JavaScript metronome application。
答案 1 :(得分:1)
控制器还必须实现javafx.fxml.Initializable接口。用于调用初始化方法。控制器的代码示例显示了这一点,但描述不是很清楚。
我不确定FXML脚本。