3 回答
TA贡献1821条经验 获得超4个赞
FXMLLoader可以将 FXML 中的属性绑定到控制器中的另一个属性。因此,您可以在控制器中定义一个属性并使用其名称访问它的 FXML。
控制器:
public class Controller implements Initializable {
private StringProperty title = new SimpleStringProperty(this, "title", "");
public final StringProperty titleProperty() {
return title;
}
public final void setTitle(String value) {
titleProperty().setValue(value);
}
public final String getTitle() {
return title.getValue();
}
@Override
public void initialize(URL location, ResourceBundle resources) {
setTitle("test");
}
}
动态XML:
<BorderPane>
<center>
<label text="${controller.title}"/>
</center>
</BorderPane>
请注意,为了FXMLLoader创建绑定,属性应该像示例中那样具有修改器和访问器。
TA贡献1806条经验 获得超5个赞
使用属性代替变量。将它放在类级别。
public class Controller implements Initializable {
private String text; // or use binding property
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
@Override
public void initialize(URL location, ResourceBundle resources) {
text = "hello";
}
}
FXML
<BorderPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml">
<center>
<Label text="${controller.text}"/>
</center>
</BorderPane>
TA贡献1829条经验 获得超7个赞
尝试绑定。
首先,给标签添加一个 id:
<Label fx:id="label" />
然后,在视图的Controller中声明它:
@FXML
private Label label;
现在您必须为您的变量创建一个 StringProperty:
private final StringProperty text = new SimpleStringProperty();
最后,添加绑定:
label.textProperty().bind(text);
text.set("test");
添加回答
举报