首页 > 解决方案 > Java TableView 不只填充一列

问题描述

我似乎无法填充我的表视图列之一。有问题的专栏是我的“complianceReq”。这很奇怪,因为如果我将“brandName”换成“complianceReq”,它将正确显示品牌名称信息。但是,我似乎无法显示“complianceReq”。我尝试同时使用布尔值和字符串版本,但均未成功。

我可以确认变量确实有真/假或是/否,具体取决于我正在尝试的版本。

我还可以看到 Getter 方法也没有被调用。

我正在使用的类的代码在这里:https://pastebin.com/gswutwk0

这是我的控制器类:

private DBReader dbr;

@FXML
public TableView<JobSummaryData> tblView;

@FXML
public void updateTable() {

    ObservableList<JobSummaryData> obLst = FXCollections.observableArrayList(dbr.getJobSummary());

    tblView.getColumns().clear();
    tblView.setItems(obLst);

    TableColumn<JobSummaryData,Integer> colJobItem = new TableColumn<JobSummaryData,Integer>("Job Item Id");
    colJobItem.setCellValueFactory(new PropertyValueFactory<JobSummaryData,Integer>("jobItemId"));

    TableColumn<JobSummaryData,String> colBrandName = new TableColumn<JobSummaryData,String>("Brand Name");
    colBrandName.setCellValueFactory(new PropertyValueFactory<JobSummaryData,String>("brandName"));

    TableColumn<JobSummaryData,String> colCompliance = new TableColumn<JobSummaryData,String>("Compliance Required");
    colCompliance.setCellValueFactory(new PropertyValueFactory<JobSummaryData,String>("complianceReq"));

    TableColumn<JobSummaryData,String> colLink = new TableColumn<JobSummaryData,String>("Survey Link");
    colLink.setCellValueFactory(new PropertyValueFactory<JobSummaryData,String>("surveyLink"));

    tblView.getColumns().addAll(colJobItem, colBrandName, colCompliance, colLink);
}

@Override
public void initialize(URL arg0, ResourceBundle arg1) {
    dbr = new DBReader();
}

这是我的 JobSummaryData 类:

private int jobItemId, submittedMinutes;
private String brandName, storeId, storeName, storeLocation, jobType, status, merchandiserName, agentNumber, areaManagerName, uncompleteReason; //complianceReq
private String eMail, mobile, surveyLink; //TBA Pref contact method
private boolean complianceRequired;
private Date jobDate;

public JobSummaryData(ResultSet rs) throws SQLException {

    jobItemId = rs.getInt("jobitemid");
    submittedMinutes = rs.getInt("submittedminutes");

    brandName = rs.getString("brandname");

    storeId = rs.getString("storeid");
    storeName = rs.getString("storename");
    storeLocation = rs.getString("storelocation");
    jobType = rs.getString("jobtype");
    status = rs.getString("Status");
    merchandiserName = rs.getString("merchandisername");
    agentNumber = rs.getString("agentnumber");
    areaManagerName = rs.getString("areamanagername");
    uncompleteReason = rs.getString("uncompletereason");

    eMail = rs.getString("Email");
    mobile = rs.getString("Mobile");
    surveyLink = rs.getString("SurveyLink");        

    complianceRequired = rs.getBoolean("ComplianceRequired");
    /*if(rs.getBoolean("ComplianceRequired")) {
        complianceReq = "Yes";
    }
    else {
        complianceReq = "No";
    }*/

    jobDate = rs.getDate("jobdate");
}

public int getJobItemId() {return jobItemId;}
public int getSubmittedMins() {return submittedMinutes;}

public String getBrandName() {return brandName;}
public String getStoreId() {return storeId;}
public String getStoreName() {return storeName;}
public String getStoreLocation() {return storeLocation;}
public String getJobType() {return jobType;}
public String getJobStatus() {return status;}
public String getMerchName() {return merchandiserName;}
public String getAgentNum() {return agentNumber;}
public String getAreaManagerNum() {return areaManagerName;}
public String getUncompReason() {return uncompleteReason;}

public String getEMail() {return eMail;}
public String getMobile() {return mobile;}
public String getSurveyLink() {return surveyLink;}

//public String getComplianceRequired() {return complianceReq;}
public boolean getComplianceBool() {return complianceRequired;}

public Date getJobDate() {return jobDate;}

我错过了什么?谢谢

标签: java

解决方案


你传递"complianceReq"给了,PropertyValueFactory但你的类中没有getComplianceReq()方法JobSummaryData。该类PropertyValueFactory要求 getter 和 setter 遵循 Java Bean 命名约定。

将单元格值工厂更改为:

colCompliance.setCellValueFactory(new PropertyValueFactory<>("complianceRequired"));

将您班级中的吸气剂更改JobSummaryData为:

public String getComplianceReq() { return complianceReq; }

如果您曾经为您的JobSummaryData类实现过 JavaFX 属性,请不要忘记添加正确命名的 property-getter — <code>complianceRequiredProperty() 或complianceReqProperty(),具体取决于。


推荐阅读