mat*_*ean 9 java tableview javafx-2
我正在尝试使用TableView创建一个表,并根据User对象列表以编程方式填充它.它User有三个变量,nameProperty(String),rankProperty(Enum称为Rank)和netMeritsProperty(int).这些都存储在SimpleStringProperty对象中.我的问题是数据不会出现在实际的表中,如下所示:

这是我的表格代码.我不明白的是什么?
TableColumn<User, String> name = new TableColumn<>("Name");
name.setCellValueFactory(new PropertyValueFactory<User, String>("nameProperty"));
TableColumn<User, String> rank = new TableColumn<>("Rank");
rank.setCellValueFactory(new PropertyValueFactory<User, String>("rankProperty"));
TableColumn<User, String> netMerits = new TableColumn<>("Net Merits");
netMerits.setCellValueFactory(new PropertyValueFactory<User, String>("netMeritsProperty"));
userTable.getColumns().addAll(name, rank, netMerits);
Run Code Online (Sandbox Code Playgroud)
Ale*_*rov 15
答案是关注,您作为参数提供的字符串内容PropertyValueFactory,以及在封装数据类型中实现的方法.
实例化:
new PropertyValueFactory<User, String>("name")
Run Code Online (Sandbox Code Playgroud)
将查找:
User.nameProperty()
Run Code Online (Sandbox Code Playgroud)
sco*_*ttb 14
使用PropertyValueFactory很简单,但它并非万无一失.
使用PropertyValueFactory可能最麻烦的一点是,您提供的参数必须符合STRICT约定的JavaFX Bean属性的名称:
最好的方法是查看您的JavaFX Bean定义块,并找到您的Property行.获取属性的名称,省略属性为"property"的部分,并将其完全复制(在相同的情况下)到传递给PropertyValueFactory的字符串.
例如,假设你有这个JavaFX Bean定义:
public final String getFirstName() { return this.m_firstname.get(); }
public final void setFirstName(String v) { this.m_firstname.set(v); }
public final StringProperty firstNameProperty() { return m_firstname; }
Run Code Online (Sandbox Code Playgroud)
查看最后一行中属性的名称"firstNameProperty".省略"Property",结果字符串是必须使用-exactly-作为PropertyValueFactory的String参数,例如."名字".
tcolMyTableCol.setCellValueFactory(new PropertyValueFactory("firstName"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18753 次 |
| 最近记录: |