我正在尝试从 FXML 运行以下示例参考 https://docs.oracle.com/javase/8/javafx/api/javafx/fxml/doc-files/introduction_to_fxml.html#script_blocks_not_limited:
此示例包括在 JavaScript 脚本中声明一个 String 变量,并稍后在 FXML 中使用它$
用于在标签中显示字符串的运算符。
问题是,当我使用 Java 8u40 运行此示例时,标签为空,而不是显示声明的字符串。
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>
JavaFx测试:
public class JavaFxTest extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setScene(new Scene(new JavaFxComponent()));
primaryStage.show();
}
public static final void main(String[] args) {
launch(args);
}
}
看起来 ”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>
注意:第一种方法有效<?import java.lang.String?>
需要进口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)