Java FX绑定属性问题

时间:2018-02-16 15:59:30

标签: java javafx properties binding

最近我开始学习Java FX。现在我正在练习属性绑定。我现在使用Inetellij IDE。我有一个问题,我无法解决,我不明白什么是错的。我宣布了一些属性,例如。 Person类中的StringProperty以及创建的构造函数和getter以及setter。我试图在初始化方法中绑定(或bindBidirectional)这些属性,但我不能。当我把(如代码中)person.getNameProperty作为方法bind或bindBidirectional的参数时,会出现错误。任何人都可以帮我这个吗?我该怎么办?我看到在Netbeans IDE中编写的代码非常相似,并且没有这样的问题。

MAIN

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Hello World");
    primaryStage.setScene(new Scene(root, 300, 350));
    primaryStage.show();
}


public static void main(String[] args) {
    launch(args);
}
}

控制器:

import javafx.scene.control.TextField;


import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable {

@FXML
private TextField nameTextField;

//other declarations

private Person person = new Person();

@Override
public void initialize(URL location, ResourceBundle resources) {
    nameTextField.textProperty().bindBidirectional(person.getNameProperty());


}
}

CLASS PERSON:

package sample;

import javafx.beans.property.*;

import java.time.LocalDate;

/**
 * Created by User on 2018-02-16.
 */
public class Person {

//person's name
private StringProperty nameProperty = new SimpleStringProperty();

//Other properties

//consturctor
public Person() {

}

public String getNameProperty() {
    return nameProperty.get();
}

public StringProperty namePropertyProperty() {
    return nameProperty;
}

public void setNameProperty(String nameProperty) {
    this.nameProperty.set(nameProperty);

} }

FXML文件看起来很好 - 我只是运行布局。

1 个答案:

答案 0 :(得分:1)

您不绑定到绑定到属性本身的字符串。

nameTextField.textProperty().bindBidirectional(person.namePropertyProperty());

并且会在这里提出一些个人意见;)IntelliJ是Java开发的最佳IDE。今天有你的插头。