我试图在JavaFX中填充TableView,但只有一个列填充了Data。我一直在关注oracle文档,并认为我的名称约定是正确的。
数据模型:
import javafx.beans.property.SimpleIntegerProperty;
public class PeakClassification {
private final SimpleIntegerProperty peakStart;
private final SimpleIntegerProperty peakEnd;
private final SimpleIntegerProperty peakMaxima;
private final SimpleIntegerProperty peakHeight;
private final SimpleIntegerProperty peakWidth;
public PeakClassification(int peakStart, int peakEnd, int peakMaxima, int peakHeight) {
this.peakStart = new SimpleIntegerProperty(peakStart);
this.peakEnd = new SimpleIntegerProperty(peakEnd);
this.peakMaxima = new SimpleIntegerProperty(peakMaxima);
this.peakHeight = new SimpleIntegerProperty(peakHeight);
this.peakWidth = new SimpleIntegerProperty(peakEnd - peakStart);
}
public int getPeakWidth() {
return peakWidth.get();
}
public int getPeakHeight() {
return peakHeight.get();
}
public int getPeakStart() {
return peakStart.get();
}
public int getPeakEnd() {
return peakEnd.get();
}
public int getPeakMaxima() {
return peakMaxima.get();
}
}
创建表格的代码:
//instantiate the table
TableView tableView = new TableView();
//start values
TableColumn startValue = new TableColumn("Start pos");
startValue.setMinWidth(100);
startValue.setCellValueFactory(new PropertyValueFactory<PeakClassification, Integer>("peakStart"));
TableColumn maximumValue = new TableColumn("Max pos");
startValue.setCellValueFactory(new PropertyValueFactory<PeakClassification, Integer>("peakMaxima"));
tableView.setItems(peakClassifications);
tableView.getColumns().addAll(startValue, maximumValue);
我已将peakClassifications
列表打印到控制台,以验证maximumValue是否为空。
peakMaxima
字段的getter为getPeakMaxima()
,因此它应该能够找到它。我查看了其他stackoverflow条目,这似乎是大多数情况下的问题。
这是结果的片段:
这可能是一个明显的错误。有任何想法吗? 谢谢。
答案 0 :(得分:0)
错误就在这里,你再次使用startValue
变量而不是maximumValue
TableColumn maximumValue = new TableColumn("Max pos");
startValue.setCellValueFactory(new PropertyValueFactory<PeakClassification, Integer>("peakMaxima"));