📅  最后修改于: 2023-12-03 15:16:03.813000             🧑  作者: Mango
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 方法,我们可以添加,删除和管理列表的数据。