我有一个fxml文件:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<HBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="my.AppController">
<children>
<TextArea prefHeight="200.0" prefWidth="200.0" text="${ddd}"/>
</children>
</HBox>
您可以看到我想使用${ddd}
将textarea的文本绑定到my.AppController
的自定义属性。
my.AppController
的代码:
public class AppController {
@FXML
public StringProperty ddd = new SimpleStringProperty("dddddddddd");
}
当我运行这个javafx应用程序时,它没有在textarea中显示任何内容,似乎它无法从ddd
绑定到AppController
。
正确的方法是什么?
答案 0 :(得分:1)
截至2015年2月和Java 8,似乎不支持此功能。你不能在FXML中使用表达式绑定到控制器,我猜你必须在控制器初始化代码中这样做。
实际上我非常失望,这使得JavaFX FXML与WPF XAML相比技术要弱得多。
答案 1 :(得分:1)
要使TextArea
文本绑定到属性,请使用fx:id
。将fx:id
分配给TextArea
,在控制器中使用它并将其textProperty()
绑定到您喜欢的任何属性。您甚至可以直接声明文本(如果您正在寻找它)。
<TextArea fx:id="textArea" prefHeight="200.0" prefWidth="200.0"/>
<强>控制器强>
public class AppController {
@FXML
private TextArea textArea;
...
public void initialize(URL location, Resources resources) {
textArea.textProperty().bind(customProperty);
//textArea.setText("dddddddddd");
}
...
}