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

JavaFX中每行都有删除按钮的ListView

JavaFX中的ListView是一个可滚动的列表视图,用于显示一组项目。每个项目通常由一个单独的单元格表示。要在每行中添加删除按钮,可以使用自定义的单元格工厂来实现。

首先,需要创建一个自定义的单元格类,该类继承自ListCell类,并重写updateItem方法。在updateItem方法中,可以创建一个删除按钮,并将其添加到单元格中。当按钮被点击时,可以通过ListView的getItems方法获取到当前行的数据,并进行删除操作。

以下是一个示例代码:

代码语言:txt
复制
import javafx.scene.control.Button;
import javafx.scene.control.ListCell;
import javafx.scene.control.ListView;
import javafx.util.Callback;

public class DeleteButtonCellFactory implements Callback<ListView<String>, ListCell<String>> {

    @Override
    public ListCell<String> call(ListView<String> listView) {
        return new ListCell<String>() {
            @Override
            protected void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);
                
                if (item != null) {
                    setText(item);
                    Button deleteButton = new Button("删除");
                    deleteButton.setOnAction(event -> {
                        String selectedItem = getListView().getItems().get(getIndex());
                        getListView().getItems().remove(selectedItem);
                    });
                    setGraphic(deleteButton);
                } else {
                    setText(null);
                    setGraphic(null);
                }
            }
        };
    }
}

然后,在JavaFX的应用程序中,可以使用setCellFactory方法将自定义的单元格工厂应用到ListView上。例如:

代码语言:txt
复制
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.ListView;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        ListView<String> listView = new ListView<>();
        listView.setItems(FXCollections.observableArrayList("Item 1", "Item 2", "Item 3"));
        listView.setCellFactory(new DeleteButtonCellFactory());

        VBox root = new VBox(listView);
        Scene scene = new Scene(root, 200, 200);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

这样,每行都会显示一个删除按钮,点击按钮可以删除对应的行数据。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供相关链接。但是,腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。

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

相关·内容

  • 领券