JavaFX/SceneBuilder StringProperty[值: ] 单元格中的文本
JavaFX/SceneBuilder StringProperty[value: ] text in cell
所以我正在为我的 Java/SQL 讲座做一个项目,内容是关于客户和这些客户可以租用的建筑物的管理工具。
我为我的客户创建了一个 .fxml,用于搜索 sql 数据库并显示它们,然后在 TableView 中显示它们。目前我只是在测试 GUI 并试图让这些东西正常工作,但我无法弄清楚如何将文本正确地放入我的 TableView 中。我为我的客户 (Kunde) 创建了一个 class,并为我的 customer.fxml 创建了控制器 class。我还为我的客户制作了一个 ObservableList,并将测试客户放入其中。 TableView 实际上 "shows" 行,但不仅仅是值,而是添加了“[...]属性 [value: ]”,然后是字符串的实际值。但我只想在细胞中拥有真正的价值。 Here是问题的小图
这是我的代码。我希望任何人都可以帮助我(一些评论或属性是德语的,但我仍然希望你能理解它的意思)。
客户控制器:
还有我的客户class:
package project.hausverwaltung.model;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
public class Kunde {
private SimpleStringProperty firstName;
private SimpleStringProperty lastName;
private SimpleStringProperty street;
private SimpleStringProperty streetNumber;
private SimpleIntegerProperty zip;
private SimpleStringProperty city;
private SimpleStringProperty birthDate;
private SimpleIntegerProperty customerID;
public Kunde(String firstName, String lastName, String street, String streetNumber, int zip, String city,
int customerID, String birthDate) {
this.firstName = new SimpleStringProperty(firstName);
this.lastName = new SimpleStringProperty(lastName);
this.street = new SimpleStringProperty(street);
this.streetNumber = new SimpleStringProperty(streetNumber);
this.zip = new SimpleIntegerProperty(zip);
this.city = new SimpleStringProperty(city);
this.birthDate = new SimpleStringProperty(birthDate);
this.customerID = new SimpleIntegerProperty(customerID);
}
public SimpleStringProperty getFirstName() {
return firstName;
}
public void setFirstName(SimpleStringProperty firstName) {
this.firstName = firstName;
}
public SimpleStringProperty getLastName() {
return lastName;
}
public void setLastName(SimpleStringProperty lastName) {
this.lastName = lastName;
}
public SimpleStringProperty getStreet() {
return street;
}
public void setStreet(SimpleStringProperty street) {
this.street = street;
}
public SimpleStringProperty getStreetNumber() {
return streetNumber;
}
public void setStreetNumber(SimpleStringProperty streetNumber) {
this.streetNumber = streetNumber;
}
public SimpleIntegerProperty getZip() {
return zip;
}
public void setZip(SimpleIntegerProperty zip) {
this.zip = zip;
}
public SimpleStringProperty getCity() {
return city;
}
public void setCity(SimpleStringProperty city) {
this.city = city;
}
public SimpleStringProperty getBirthDate() {
return birthDate;
}
public void setBirthDate(SimpleStringProperty birthDate) {
this.birthDate = birthDate;
}
public SimpleIntegerProperty getCustomerID() {
return customerID;
}
public void setCustomerID(SimpleIntegerProperty customerID) {
this.customerID = customerID;
}
}
我希望你们中的任何人都能给我一点提示,我的代码有什么问题以及如何修复它。非常感谢!
为您的模型class (Kunde
) 使用JavaFX Properties pattern(这是常规Java Bean 模式的一个相当简单的扩展)。换句话说,您通过通常的 get/set
方法定义了一个名为 firstName
的 String
属性,它由一个可观察的 属性 实现,然后定义一个访问器属性 本身的方法。
您还应该一如既往地针对接口进行编程,而不是将实现 class 用作模型 class public API 的一部分。
具体来说,应该是这样的:
public class Kunde {
// Properties:
private final StringProperty firstName = new SimpleStringProperty();
public StringProperty firstNameProperty() {
return firstName ;
}
public final String getFirstName() {
return firstNameProperty().get();
}
public final void setFirstName(String firstName) {
firstNameProperty().set(firstName);
}
// similarly for other properties
// Constructor:
public Kunde(String firstName /* , ... */) {
// Note there is no problem in calling setFirstName(...)
// from the constructor as it is a final method:
setFirstName(firstName);
// ...
}
}
所以我正在为我的 Java/SQL 讲座做一个项目,内容是关于客户和这些客户可以租用的建筑物的管理工具。
我为我的客户创建了一个 .fxml,用于搜索 sql 数据库并显示它们,然后在 TableView 中显示它们。目前我只是在测试 GUI 并试图让这些东西正常工作,但我无法弄清楚如何将文本正确地放入我的 TableView 中。我为我的客户 (Kunde) 创建了一个 class,并为我的 customer.fxml 创建了控制器 class。我还为我的客户制作了一个 ObservableList,并将测试客户放入其中。 TableView 实际上 "shows" 行,但不仅仅是值,而是添加了“[...]属性 [value: ]”,然后是字符串的实际值。但我只想在细胞中拥有真正的价值。 Here是问题的小图
这是我的代码。我希望任何人都可以帮助我(一些评论或属性是德语的,但我仍然希望你能理解它的意思)。 客户控制器:
还有我的客户class:
package project.hausverwaltung.model;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
public class Kunde {
private SimpleStringProperty firstName;
private SimpleStringProperty lastName;
private SimpleStringProperty street;
private SimpleStringProperty streetNumber;
private SimpleIntegerProperty zip;
private SimpleStringProperty city;
private SimpleStringProperty birthDate;
private SimpleIntegerProperty customerID;
public Kunde(String firstName, String lastName, String street, String streetNumber, int zip, String city,
int customerID, String birthDate) {
this.firstName = new SimpleStringProperty(firstName);
this.lastName = new SimpleStringProperty(lastName);
this.street = new SimpleStringProperty(street);
this.streetNumber = new SimpleStringProperty(streetNumber);
this.zip = new SimpleIntegerProperty(zip);
this.city = new SimpleStringProperty(city);
this.birthDate = new SimpleStringProperty(birthDate);
this.customerID = new SimpleIntegerProperty(customerID);
}
public SimpleStringProperty getFirstName() {
return firstName;
}
public void setFirstName(SimpleStringProperty firstName) {
this.firstName = firstName;
}
public SimpleStringProperty getLastName() {
return lastName;
}
public void setLastName(SimpleStringProperty lastName) {
this.lastName = lastName;
}
public SimpleStringProperty getStreet() {
return street;
}
public void setStreet(SimpleStringProperty street) {
this.street = street;
}
public SimpleStringProperty getStreetNumber() {
return streetNumber;
}
public void setStreetNumber(SimpleStringProperty streetNumber) {
this.streetNumber = streetNumber;
}
public SimpleIntegerProperty getZip() {
return zip;
}
public void setZip(SimpleIntegerProperty zip) {
this.zip = zip;
}
public SimpleStringProperty getCity() {
return city;
}
public void setCity(SimpleStringProperty city) {
this.city = city;
}
public SimpleStringProperty getBirthDate() {
return birthDate;
}
public void setBirthDate(SimpleStringProperty birthDate) {
this.birthDate = birthDate;
}
public SimpleIntegerProperty getCustomerID() {
return customerID;
}
public void setCustomerID(SimpleIntegerProperty customerID) {
this.customerID = customerID;
}
}
我希望你们中的任何人都能给我一点提示,我的代码有什么问题以及如何修复它。非常感谢!
为您的模型class (Kunde
) 使用JavaFX Properties pattern(这是常规Java Bean 模式的一个相当简单的扩展)。换句话说,您通过通常的 get/set
方法定义了一个名为 firstName
的 String
属性,它由一个可观察的 属性 实现,然后定义一个访问器属性 本身的方法。
您还应该一如既往地针对接口进行编程,而不是将实现 class 用作模型 class public API 的一部分。
具体来说,应该是这样的:
public class Kunde {
// Properties:
private final StringProperty firstName = new SimpleStringProperty();
public StringProperty firstNameProperty() {
return firstName ;
}
public final String getFirstName() {
return firstNameProperty().get();
}
public final void setFirstName(String firstName) {
firstNameProperty().set(firstName);
}
// similarly for other properties
// Constructor:
public Kunde(String firstName /* , ... */) {
// Note there is no problem in calling setFirstName(...)
// from the constructor as it is a final method:
setFirstName(firstName);
// ...
}
}