首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在FXML中定义一个可编辑的TableCell?

在FXML中定义一个可编辑的TableCell,可以通过以下步骤实现:

  1. 创建一个自定义的TableCell类,继承自javafx.scene.control.TableCell,并指定泛型类型为需要显示的数据类型。例如,如果需要显示一个String类型的数据,可以创建一个名为StringEditableTableCell的类。
代码语言:java
复制
import javafx.scene.control.TableCell;
import javafx.scene.control.TextField;

public class StringEditableTableCell extends TableCell<YourDataType, String> {
    private TextField textField;

    public StringEditableTableCell() {
        textField = new TextField();
        textField.setOnKeyPressed(event -> {
            if (event.getCode().equals(KeyCode.ENTER)) {
                commitEdit(textField.getText());
            } else if (event.getCode().equals(KeyCode.ESCAPE)) {
                cancelEdit();
            }
        });
    }

    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);

        if (empty || item == null) {
            setText(null);
            setGraphic(null);
        } else {
            if (isEditing()) {
                textField.setText(item);
                setText(null);
                setGraphic(textField);
            } else {
                setText(item);
                setGraphic(null);
            }
        }
    }

    @Override
    public void startEdit() {
        super.startEdit();
        setText(null);
        setGraphic(textField);
        textField.requestFocus();
    }

    @Override
    public void cancelEdit() {
        super.cancelEdit();
        setText(getItem());
        setGraphic(null);
    }

    @Override
    public void commitEdit(String newValue) {
        super.commitEdit(newValue);
        // 在这里可以处理编辑后的数据,例如更新到数据库等操作
    }
}
  1. 在FXML文件中,使用fx:factory标签来指定TableCell的工厂类。例如,如果需要在一个TableView中显示一个名为name的可编辑列,可以这样定义:
代码语言:xml
复制
<TableView fx:id="tableView">
    <columns>
        <TableColumn text="Name">
            <cellValueFactory>
                <PropertyValueFactory property="name" />
            </cellValueFactory>
            <cellFactory>
                <fx:factory>
                    <StringEditableTableCell />
                </fx:factory>
            </cellFactory>
        </TableColumn>
    </columns>
</TableView>
  1. 在Java代码中,将FXML文件加载并与Controller类关联。然后,在Controller类中获取TableView的引用,并设置数据源。
代码语言:java
复制
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;

import java.net.URL;
import java.util.ResourceBundle;

public class YourController implements Initializable {
    @FXML
    private TableView<YourDataType> tableView;

    @FXML
    private TableColumn<YourDataType, String> nameColumn;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));

        // 设置数据源
        tableView.setItems(yourDataList);
    }
}

这样,就可以在FXML中定义一个可编辑的TableCell,并实现相应的编辑功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

解密区块链:可编辑还是不可编辑,这是一个问题

无论区块链将会如何改变我们的世界,区块链的一大特点就是不可编辑,比特币也正是利用这一特点,让其成为一种价值传递网络,被业界普遍看好,试想一下,如果区块链变成了可编辑的,那么比特币的价值,信任度将会大大降低,恐怕大众也就不会这么热捧比特币了。 但作为不可编辑的区块链技术,在某种程度上,又带来了一些问题,这些问题阻碍着区块链技术的创新与发展,具体可参看“解密区块链(十三):不可编辑性带来的问题”。 📷 这一互相矛盾的问题,也让大众在网络上产生了激烈的争辩。 比特币作为区块链技术最为成功的应用,拥有大量的粉丝,大

07

上帝的归上帝,凯撒的归凯撒—— CODING 权限管理更新

《马太福音》22 章 15-22 节,耶稣用这句话,说明了神权与政权之间的正确关系,奠定了神权与政权的基础,也划清了二者的界限。其实这两个问题如今也依旧出现在公司架构中,随着数字化转型的浪潮,越来越多的企业开始使用信息化管理系统取代传统办公。在转型过程中,最大的挑战之一就是如何给相应信息设置权限,确保不同职能部门的员工只能使用特定功能,浏览与自身业务相关的信息,不能擅自查看或修改超越权限的内容,保障企业数字资产的准确性、保密性、安全性。CODING 研发管理系统作为一个高效的研发流程与管理平台,在上线了“测试管理”、“缺陷管理”、“持续集成”等重要功能后,在既有的权限管理基础上增加了企业级权限管理,以及根据研发团队各角色职能界定的项目级权限管理,通过更精细的权限划分协助企业研发团队更有序地进行软件开发。

03
领券