📜  javafx 编辑列表 - Java (1)

📅  最后修改于: 2023-12-03 15:16:03.813000             🧑  作者: Mango

JavaFX 编辑列表 - Java

JavaFX 是一个用于构建丰富,交互式应用程序的跨平台 GUI 工具包。JavaFX 提供了许多组件和布局以创建复杂的用户界面。 在本文中,我们将了解如何使用 JavaFX 编辑列表。

列表视图

JavaFX 提供了 ListView 类来创建一个可以滚动并显示列表数据的列表视图。下面是一个简单的例子:

ListView<String> listView = new ListView<>();
listView.getItems().addAll("Item 1", "Item 2", "Item 3");
编辑模式

JavaFX 提供了两种编辑模式:

  • 单元格编辑:用户可以编辑列表中的单个单元格。
  • 行编辑:用户可以编辑整行中的所有单元格。

在默认情况下,ListView 处于单元格编辑模式。

单元格编辑模式

在单元格编辑模式下,用户可以编辑列表中的单个单元格。要启用单元格编辑模式,请将 ListView 的 editable 属性设置为 true。

listView.setEditable(true);
行编辑模式

在行编辑模式下,用户可以编辑列表中的整行。要启用行编辑模式,请将 ListView 的 cellFactory 属性设置为一个实现了单元格编辑的工厂类。

listView.setCellFactory(param -> {
    ListCell<String> cell = new ListCell<String>() {
        @Override
        public void updateItem(String item, boolean empty) {
            super.updateItem(item, empty);
            if (empty) {
                setText(null);
            } else {
                setText(item);
            }
        }

        @Override
        public void startEdit() {
            super.startEdit();
            createTextField();
        }

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

        @Override
        public void updateSelected(boolean selected) {
            super.updateSelected(selected);
            if (selected) {
                createTextField();
            } else {
                setText(getItem());
            }
        }

        private void createTextField() {
            TextField textField = new TextField(getItem());
            textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);
            textField.focusedProperty().addListener((observable, oldValue, newValue) -> {
                if (!newValue) {
                    commitEdit(textField.getText());
                }
            });
            setGraphic(textField);
            setText(null);
            textField.requestFocus();
            textField.selectAll();
        }
    };

    cell.setPrefWidth(0);
    cell.setPadding(Insets.EMPTY);
    return cell;
});
数据源

要向列表视图中添加数据,请使用 getList 方法获取 ObservableList,然后使用 add 方法添加数据。要从列表视图中删除数据,请使用 remove 方法。

ObservableList<String > items = listView.getItems();
items.add("New item");
items.remove(1);
结论

使用 JavaFX 编辑列表是创建用户界面的强大工具。 JavaFX 提供了 ListView 类来创建一个可以滚动并显示列表数据的列表视图,并且可以使用单元格编辑模式和行编辑模式来编辑列表。使用 getData 方法和 add 和 remove 方法,我们可以添加,删除和管理列表的数据。