JavaFX中的ListView是一个可滚动的列表视图,用于显示一组项目。每个项目通常由一个单独的单元格表示。要在每行中添加删除按钮,可以使用自定义的单元格工厂来实现。
首先,需要创建一个自定义的单元格类,该类继承自ListCell类,并重写updateItem方法。在updateItem方法中,可以创建一个删除按钮,并将其添加到单元格中。当按钮被点击时,可以通过ListView的getItems方法获取到当前行的数据,并进行删除操作。
以下是一个示例代码:
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上。例如:
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);
}
}
这样,每行都会显示一个删除按钮,点击按钮可以删除对应的行数据。
对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供相关链接。但是,腾讯云提供了丰富的云计算服务,包括云服务器、云数据库、云存储等,可以根据具体需求选择适合的产品。
领取专属 10元无门槛券
手把手带您无忧上云