JavaFX TableView仅填充一些列

时间:2018-03-14 14:03:11

标签: java javafx

我试图在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条目,这似乎是大多数情况下的问题。

这是结果的片段:

enter image description here

这可能是一个明显的错误。有任何想法吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

错误就在这里,你再次使用startValue变量而不是maximumValue

TableColumn maximumValue = new TableColumn("Max pos");
startValue.setCellValueFactory(new PropertyValueFactory<PeakClassification, Integer>("peakMaxima"));