如何在javafx中更新或更改表raw的值而不使表可编辑?

问题描述 投票:0回答:1

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

javafx tableview
1个回答
4
投票

您不直接更新

TableCell
的值。相反,修改底层数据模型值。

查看当您调用

List<>
时要传递给
TableView
tableView.setItems()
类型。这就是您要更新的数据类型。

例如,假设您有一个

TableView<Person>
,其中包含
List
Person
对象:

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));

现在,当您的用户单击

Button
或您想要用新值更新
TableView
时,您将更新
Person
对象:

person.setEmail("[email protected]");

一旦该属性发生更改,

TableView
将更新以反映新值。


这是一个高级概述/示例。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.