首页 > 解决方案 > 如何在 javafx 中更新或更改表 raw 的值而不使表可编辑?

问题描述

我非常沮丧,多次尝试实现这一点,但还没有成功。当用户更改按钮时,我正在尝试更改 javafx 表 raw 的特定值。假设如果表格有一个特定的原始值为 10,那么如果用户按下按钮,该值将更改为 20,但我该怎么做呢?但是这种简单的技术在 java swing 中非常容易。请帮助我在 javafx 中做同样的事情。

标签: javafxtableview

解决方案


您不TableCell直接更新 a 的值。相反,修改基础数据模型值。

看看你在调用时List<>传递的类型。这是您要更新的数据类型。TableViewtableView.setItems()

例如,假设您有一个TableView<Person>包含 aListPerson对象:

public class Person {
    private final StringProperty name = new SimpleStringProperty();
    private final StringProperty email = new SimpleStringtProperty();

    public Person (String name, String email) {
        this.name.set(name);
        this.email.set(email);
    }

    public String getName() {
        return name.get();
    }

    public StringProperty nameProperty() {
        return name;
    }

    public void setName(String name) {
        this.name.set(name);
    }

    public String getEmail() {
        return email.get();
    }

    public StringProperty emailProperty() {
        return email;
    }

    public void setEmail(String email) {
        this.email.set(email);
    }
}

所以你有你的List<Person>,你已经用它来填充你的TableView

tableView.setItems(FXCollections.observableArrayList(persons));

现在,当您的用户单击 aButton或您想TableView用新值更新 the 时,您将更新Person对象:

person.setEmail("me@home.com");

一旦该属性发生更改,TableView它将更新以反映新值。


这是一个高级概述/示例。如果您需要更详细的帮助,请编辑您的问题并包含一个最小的、可重现的示例,以展示您所面临的确切问题。

阅读有关如何提出一个好问题的帮助文章也是明智的。


推荐阅读