Javafx FXML中的JavaScript脚本

Javafx FXML中的JavaScript脚本,javafx,javafx-8,Javafx,Javafx 8,我正在尝试从FXML运行以下示例: 此示例包括在JavaScript脚本中声明字符串变量,然后在FXML中使用$运算符在标签中显示字符串 问题是,当我使用Java8U40运行这个示例时,标签是空的,而不是显示声明的字符串 JavaFxComponent.java: public class JavaFxComponent extends VBox { public JavaFxComponent() throws Exception { FXMLLoader fxmlLo

我正在尝试从FXML运行以下示例:

此示例包括在JavaScript脚本中声明字符串变量,然后在FXML中使用
$
运算符在标签中显示字符串

问题是,当我使用Java8U40运行这个示例时,标签是空的,而不是显示声明的字符串

JavaFxComponent.java:

public class JavaFxComponent extends VBox {
    public JavaFxComponent() throws Exception {
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/JavaFxComponent.fxml"));
        fxmlLoader.setRoot(this);
        fxmlLoader.load();
    }
}
JavaFxComponent.fxml:

<?xml version="1.0" encoding="UTF-8"?>
<?language javascript?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<fx:root type="javafx.scene.layout.VBox" xmlns="http://javafx.com/javafx/8"
    xmlns:fx="http://javafx.com/fxml">
    <fx:script>
        var myText = "This is the text of my label.";
    </fx:script>
    <Label text="$myText" />
</fx:root>
似乎“
var myText
”没有在“
$
”执行查找的范围内创建引用。这可能不是你想要的答案,但我相信,对于那些偶然发现同一问题的人来说,提及替代方案将是有益的,至少在这一问题得到解决或有人对这一问题有更多的了解之前是如此


  • <fx:define>
         <String fx:id="myText" fx:value="This is the text of my label." /> 
    </fx:define>
    <Label text="$myText" />
    
    <Label fx:id="myLabel" />
    <fx:script>
        myLabel.text = "This is the text of my label.";
    </fx:script>
    
    
    

  • <fx:define>
         <String fx:id="myText" fx:value="This is the text of my label." /> 
    </fx:define>
    <Label text="$myText" />
    
    <Label fx:id="myLabel" />
    <fx:script>
        myLabel.text = "This is the text of my label.";
    </fx:script>
    
    
    myLabel.text=“这是我的标签文本。”;
    

  • 注意:对于第一种方法,需要导入

    感谢您的回答,我可以使用您的第二种方法作为解决方法。