【问题标题】:JavaFX Tableview not populating data to columnJavaFX Tableview没有将数据填充到列
【发布时间】:2015-06-03 16:42:11
【问题描述】:

我正在尝试创建一个具有 1 个计数器 + 4 个值列的 TableView。但是由于某些未知的原因,列 val3、val4 没有被填充到 tableview 中。我已经用“val3.get()”更新了 getVal2() 方法,我可以在 Value2 的列中看到 val3 的值。因此,我怀疑读取 Value3 列存在一些问题。我还检查了命名约定/骆驼大小写。我觉得很好。有谁能帮我解决这个问题吗?

        ObservableList<Counters> data = FXCollections.observableArrayList();
    Iterator<String> counterIterator = counterMap.keySet().iterator();
    while(counterIterator.hasNext()) {
        String counter = counterIterator.next();
        String[] values = counterMap.get(counter);
        String val1 = "a", val2 = "b", val3 = "c", val4 = "";
    Counters counters = new Counters(counter, val1, val2, val3, val4);
        data.add(counters);
    }

    TableView<Counters> table = new TableView<Counters>();
    table.setEditable(true);

    TableColumn<Counters, String> counter = new TableColumn<Counters, String>("Counter");
    counter.setCellValueFactory(new PropertyValueFactory<Counters, String>("counter"));
    TableColumn<Counters, String> val1 = new TableColumn<Counters, String>("Value1");
    val1.setCellValueFactory(new PropertyValueFactory<Counters, String>("val1"));
    TableColumn<Counters, String> val2 = new TableColumn<Counters, String>("Value2");
    val2.setCellValueFactory(new PropertyValueFactory<Counters, String>("val2"));
    TableColumn<Counters, String> val3 = new TableColumn<Counters, String>("Value3");
    val3.setCellValueFactory(new PropertyValueFactory<Counters, String>("val3"));
    TableColumn<Counters, String> val4 = new TableColumn<Counters, String>("Value4");
    val3.setCellValueFactory(new PropertyValueFactory<Counters, String>("val4"));

    table.getColumns().add(counter);
    table.getColumns().add( val1);
    table.getColumns().add( val2);
    table.getColumns().add( val3);
    table.getColumns().add( val4);
    table.setItems(data);




public static class Counters {

    private SimpleStringProperty counter, val1, val2, val3, val4;

    public Counters(String counter, String val1, String val2, String val3, String val4) {
        this.counter = new SimpleStringProperty(counter);
        this.val1 = new SimpleStringProperty(val1);
        this.val2 = new SimpleStringProperty(val2);
        this.val3 = new SimpleStringProperty(val3);
        this.val4 = new SimpleStringProperty(val4);
    }

    public String getCounter() {
        return counter.get();
    }

    public void setCounter(String counter) {
        this.counter.set(counter);
    }

    public String getVal1() {
        return val1.get();
    }

    public void setVal1(String val1) {
        this.val1.set(val1);
    }

    public String getVal2() {
        return val2.get();
    }

    public void setVal2(String val2) {
        this.val2.set(val2);
    }

    public String getVal3() {
        return val3.get();
    }

    public void setVal3(String val3) {
        this.val3.set(val3);
    }

    public String getVal4() {
        return val4.get();
    }

    public void setVal4(String val4) {
        this.val4.set(val4);
    }
}

【问题讨论】:

    标签: javafx java-8 javafx-8


    【解决方案1】:

    你有一个复制粘贴错字

    TableColumn<Counters, String> val4 = new TableColumn<Counters, String>("Value4");
    val3.setCellValueFactory(new PropertyValueFactory<Counters, String>("val4"));
    

    应该是

    TableColumn<Counters, String> val4 = new TableColumn<Counters, String>("Value4");
    val4.setCellValueFactory(new PropertyValueFactory<Counters, String>("val4"));
    

    而 val4 总是 val4 = "" 这就是为什么它们看起来都是空的

    【讨论】:

    • 我想我是瞎到没看到 :)
    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 2017-11-01
    • 1970-01-01
    • 2014-10-08
    • 2018-10-14
    • 2013-06-06
    相关资源
    最近更新 更多