You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaFX TableView绑定数据后仅显示空白行的问题及解决方法

JavaFX TableView绑定数据后显示空白行问题修复

使用JavaFX的TableView组件绑定数据后,TableView仅展示空白行,无法正常显示列内容,相关代码如下:

Controller.java

public class Controller {


@FXML private TableView<PersonalInfo> personalInfo = new TableView<>();
@FXML private TableColumn<PersonalInfo,String> tvId;


@FXML
public void initialize() {

    tvId.setCellValueFactory(new PropertyValueFactory<>("Id"));

}

public void btnShow(ActionEvent actionEvent) {
    List<PersonalInfo> participantList = new ArrayList<>();

    participantList.add(new PersonalInfo("10") );

    personalInfo.getItems().clear();
    personalInfo.getItems().addAll(participantList);
}}

PersonalInfo类

public class PersonalInfo {
private String pId;

public PersonalInfo(String pId) {
    this.pId = pId;
}
public PersonalInfo() {
}

public PersonalInfo setpId(String pId) {
    this.pId = pId;
    return this;
}

public String getpId() {
    return pId;
}}

sample.fxml

<children>
<TableView fx:id="personalInfo">
  <columns>
    <TableColumn fx:id="tvId" prefWidth="75.0" text="Id" />
  </columns>
</TableView>
<Button mnemonicParsing="false" onAction="#btnShow" text="Show" GridPane.halignment="CENTER" GridPane.rowIndex="1" GridPane.valignment="CENTER" />
</children>

问题原因

上述代码运行后点击Show按钮,TableView仅出现空白行,无法展示Id列的内容,核心问题为PropertyValueFactory的参数与实体类getter/setter命名不匹配:PropertyValueFactory传入的参数为"Id",但PersonalInfo类对应的getter、setter方法为getpId和setpId,二者命名规则不一致导致框架无法正确读取属性值。

修复方案

  • 方案1:将PropertyValueFactory的参数改为"pId",同时将PersonalInfo类的getter、setter改为符合Java命名规范的getPId和setPId;
  • 方案2:直接将PersonalInfo类pId属性对应的getter、setter修改为getId和setId。
    修改完成后即可正常展示数据。

内容的提问来源于stack exchange,提问作者VahidKhanzadeh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:15:06