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

用于从javafx tableView和SQLite表行中删除选定行的删除按钮功能

删除按钮功能是一种常见的前端开发需求,用于从JavaFX TableView和SQLite表中删除选定的行。下面是一个完善且全面的答案:

删除按钮功能是一种用户交互功能,允许用户从JavaFX TableView和SQLite表中删除选定的行。它通常用于管理和编辑数据的应用程序中,例如管理系统、数据报表等。

实现删除按钮功能的一般步骤如下:

  1. 在JavaFX中创建一个TableView控件,用于显示SQLite表中的数据。可以使用TableView的setItems方法将数据集绑定到TableView上。
  2. 在TableView中添加一个列,用于显示删除按钮。可以使用TableColumn的setCellFactory方法自定义单元格的显示方式,将删除按钮添加到单元格中。
  3. 为删除按钮添加事件处理程序,以便在用户点击按钮时执行删除操作。可以使用Button的setOnAction方法为按钮添加事件处理程序。
  4. 在事件处理程序中,获取选定的行,并从SQLite表中删除相应的数据。可以使用TableView的getSelectionModel方法获取选定的行,然后使用SQLite的删除语句执行删除操作。

以下是一个示例代码,演示如何实现从JavaFX TableView和SQLite表中删除选定行的删除按钮功能:

代码语言:txt
复制
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DeleteButtonExample extends Application {

    private TableView<Person> tableView;
    private ObservableList<Person> data;

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

    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Delete Button Example");

        // 创建TableView和数据
        tableView = new TableView<>();
        data = FXCollections.observableArrayList(
                new Person("John", "Doe"),
                new Person("Jane", "Smith"),
                new Person("Bob", "Johnson")
        );

        // 创建列和删除按钮
        TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
        firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName"));

        TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");
        lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName"));

        TableColumn<Person, Void> deleteCol = new TableColumn<>("Delete");
        deleteCol.setCellFactory(param -> new DeleteButtonCell());

        tableView.getColumns().addAll(firstNameCol, lastNameCol, deleteCol);
        tableView.setItems(data);

        // 创建布局并显示场景
        VBox vbox = new VBox(tableView);
        Scene scene = new Scene(vbox);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    // 自定义单元格,添加删除按钮
    private class DeleteButtonCell extends TableCell<Person, Void> {
        private final Button deleteButton;

        public DeleteButtonCell() {
            deleteButton = new Button("Delete");
            deleteButton.setOnAction(event -> {
                Person person = getTableRow().getItem();
                deletePerson(person);
            });
        }

        @Override
        protected void updateItem(Void item, boolean empty) {
            super.updateItem(item, empty);
            if (!empty) {
                setGraphic(deleteButton);
            } else {
                setGraphic(null);
            }
        }
    }

    // 从SQLite表中删除选定的行
    private void deletePerson(Person person) {
        try {
            Connection conn = DriverManager.getConnection("jdbc:sqlite:path/to/database.db");
            String sql = "DELETE FROM Person WHERE firstName = ? AND lastName = ?";
            PreparedStatement pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, person.getFirstName());
            pstmt.setString(2, person.getLastName());
            pstmt.executeUpdate();
            data.remove(person);
            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    // Person类,用于存储数据
    private static class Person {
        private final String firstName;
        private final String lastName;

        public Person(String firstName, String lastName) {
            this.firstName = firstName;
            this.lastName = lastName;
        }

        public String getFirstName() {
            return firstName;
        }

        public String getLastName() {
            return lastName;
        }
    }
}

在上述示例代码中,我们创建了一个JavaFX应用程序,显示一个TableView控件,其中包含两列(名字和姓氏)和一个删除按钮列。当用户点击删除按钮时,程序会从SQLite表中删除相应的行,并更新TableView中的数据。

请注意,上述示例代码中的数据库连接和删除语句是简化的示例,实际应用中需要根据具体情况进行修改和完善。

推荐的腾讯云相关产品:腾讯云数据库SQL Server、腾讯云数据库MySQL、腾讯云数据库PostgreSQL等。您可以访问腾讯云官方网站获取更多关于这些产品的详细信息和文档。

希望这个答案能够满足您的需求,如果还有其他问题,请随时提问。

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

相关·内容

PyQt5数据库开发1 4.3 QSqlTableModel 之 相关槽函数实现(多图长文详解)

运行程序,发现tableview里面的变化  十、添加插入按钮 1. 添加代码 2. 测试添加功能  3. 测试插入功能 ---- 一、打开数据库 1....Model源数据提取需要数据,用于视图组件进行显示编辑 7. 添加列名称 插入红框代码  运行后可以看到表头信息出来了 8. 根据内容调整列宽 列太宽了,很难看。...添加保存取消代码 5. 运行程序 点删除后,发现这两个按钮还是不能按  当前鼠标换别的数据试试  6....添加模型相关代码 在opentable函数这里,添加一 补充槽函数  7. 测试取消按钮 删除完之后,换别的单元格,发现保存取消按钮可以用了。...修改代码,添加自定义组件 在opentable函数插入红色框框代码 4. 运行程序,发现tableview里面的变化 十、添加插入按钮 1.

1.8K30
  • iOS开发之视图爱上CoreData

    CoreData负责在Model实体sqllite建立关联,数据模型实体类就相当于JavaJavaBean, 而CoreData功能JavaEEHibernate功能类似,最基本是两者都有通过对实体操作来实现对数据库...(JavaBean类似)     (1)AppDelegata.m多出部分代码如下,多出部分代码就可以看出,CoreData会把我们数据实体sqllite建立起一一对应关系: 1 2 3...CoreData相爱过程啦,如何在storyboardTableViewcell进行配置在这儿就不赘述了,下面给出我们要通过TableViewCoreData来实现什么功能。     ...因此TableView深爱着CoreData. 上面我们完成了通过CoreData来对数据插入查询并同步到TableView,下面将会介绍到如何对我们Cell进行删除。     ...return YES; } ​    b.开启编辑功能以后我们就可以在tableView对应方法来实现删除功能啦,当点击删除时,我们需呀获取cell对应索引在CoreData实体对象,然后通过上下文进行删除

    2.2K80

    C++ Qt开发:SqlTableModel映射组件应用

    removeRow(int row) 模型删除指定。...1.1 初始化组件首先我们来看一下MainWindow初始化部分是如何工作,主要实现了以下功能:打开数据库首先使用SQLite数据库驱动连接名为"database.db"数据库文件。...,每次点击均会在表格中提供新,当读者点击on_pushButton_save_clicked保存按钮是则会调用submitAll()该函数用于将数据提交到数据库存储,如下图所示;1.2.4 插入一条记录在...TableView 当前选择上方插入一新记录,并自动生成编号。...1.2.5 修改记录如下所示代码,用于批量修改表格中所有记录 "Uage" 字段值为某个固定年龄。下面是代码详细解释:检查是否有记录如果表格没有记录,则直接返回,不执行后续批量修改操作。

    26300

    PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】

    打开 4.2.1 import新模块 4.2.3 打开函数  3. 切换处理 4.3.1 槽函数 4.3.2 设置关联  4.3.3 测试  五、编辑记录功能 1. 寻找函数名 2....测试  九、删除记录功能 1. 在myMainWindow.py添加删除函数 2. 测试删除功能 十、涨工资测试SQL 1. 添加涨工资函数降薪函数 2. 记一下原始工资  3....为按钮设置图标 6. 实现按钮功能 三、窗体功能实现 1. 编译窗体文件资源文件 拷贝项目4-3里面的compile.bat到项目目录,改名为compilemore.bat。...打开 4.2.1 import新模块 4.2.3 打开函数 3. 切换处理 4.3.1 槽函数 4.3.2 设置关联 4.3.3 测试 五、编辑记录功能 1....在myMainWindow.py添加删除函数 2. 测试删除功能 将欧阳锋数据删掉 点击删除后,界面上显示已被删除  去数据库查查有没有  十、涨工资测试SQL 1.

    1.1K30

    JavaFX 11发说明

    介绍 以下记录描述了有关此版本重要更改信息。在某些情况下,该说明提供了有关问题或更改其他详细信息链接。 JDK 11开始,JavaFX模块与JDK分开提供。...新功能 以下注释描述了JavaFX 11一些增强功能。有关完整列表,请参阅发行说明末尾表格。...删除功能选项 删除对libavcodec 5355支持 FX Media对libavcodec 5355支持已被删除。默认情况下,这些库不在受支持Linux平台上,并且不再需要。...JDK-8195974 将javafxjava.util.logging替换为System logger 其他 JDK-8196297 删除过时JFR记录器代码 其他 JDK-8199357 FX...其他 JDK-8180151 JavaFX错误地使用具有特定尺寸两个3D框渲染场景图 场景图 JDK-8192056 组或容器删除javafx.scene.shape.Sphere-objects

    6.6K60

    C++ Qt开发:TableView与TreeView组件联动

    本章我们继续实现表格联动效果,当读者点击TableView或TreeView某一时,我们让其实现自动跟随功能,且当用户修改行特定数据时也让其动态跟随改变,首先绘制一个主界面如图,分别放置两个组件框...,底部保留两个按钮按钮1用于该表表格行列个数,按钮2则用于设置TableView表格表头参数,整个表格我们将其设置为可编辑状态。...以下是 QItemSelectionModel 一些重要特性方法:选择项: 负责管理模型选择状态,可以单独选择项、选定范围内项或清除所有选择项。...如下图所示;DialogSize.ui接着来看on_pushButton_clicked按钮是如何实现,该按钮主要用于实现改变表格与列,当点击后则会弹出一个DialogSize自定义对话框,至于对话框是如何添加在之前文章已经详细介绍过了..._2_clicked功能实现与第一个按钮完全一致,该按钮主要实现对父窗体TableView表头进行重新设置,在弹出对话框之前,需要将当前表头元素复制到strList列表容器内,并通过使用子对话框

    38910

    iOS UITableView代理方法详解 原

    iOS UITableView代理方法详解 一、补充 在上一篇博客,http://my.oschina.net/u/2340880/blog/404605,我将IOStableView(视图)...:(UIView *)view forSection:(NSInteger)section; 设置高,头视图高度尾视图高度方法 - (CGFloat)tableView:(UITableView...:(NSInteger)section; 设置高,头视图高度尾视图高度估计值(对于高度可变情况下,提高效率) - (CGFloat)tableView:(UITableView *)tableView...:(NSIndexPath *)indexPath; 自定义删除按钮标题 - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath...:(NSIndexPath *)indexPath; 下面这个方法是IOS8新方法,用于自定义创建tableView被编辑时右边按钮按钮类型为UITableViewRowAction。

    1.4K40

    iOS中表视图(UITableView)使用详解

    tableView高是可变,那么设计一个估计高度可以加快代码运行效率。...)reloadData; 重载索引栏 - (void)reloadSectionIndexTitles; 这个方法常用语新加或者删除了索引类别而无需刷新整个视图情况下。...(包括头视图,所有尾视图) - (CGRect)rectForSection:(NSInteger)section;  根据分区分别获取头视图,尾视图高度 - (CGRect)rectForHeaderInSection...位置信息 - (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point;   获取某个cell在tableView位置信息 - (NSIndexPath...五、tableView编辑操作 设置是否是编辑状态(编辑状态下cell左边会出现一个减号,点击右边会划出删除按钮) @property (nonatomic, getter=isEditing) BOOL

    1.4K30

    UITableView增加删除、移动

    UITableViewDelegate协议; 2、tableView控件editing属性默认是NO, 并且UITableViewCell默认情况下没有删除增加功能。    ...forRowAtIndexPath:(NSIndexPath *)indexPath;   后,然后UITableViewCell向左拖拽时会出现删除按钮: ?...在代理方法里面做相应处理,就可以实现删除功能,代码如下: //代理方法,实现后可以进行增加单元或者删除单元 - (void)tableView:(UITableView *)tableView commitEditingStyle...UITableViewCellEditingStyleInsert; } else{ return UITableViewCellEditingStyleDelete; } } //处理UITableViewCell增加删除功能...3、UITableViewCell移动:实现一个代理方法,就可以进行单元格移动: //实现此方法,就可以移动单元格, 方法里面是让数据样式移动保持一致 - (void)tableView:(UITableView

    1.8K30

    iOS-UI控件之UITableView(四)- cell数据刷新

    deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationMiddle]; 更新数据(没有添加删除数据,仅仅是修改已经存在数据...代理方法 /** * 只要实现了这个方法,左滑出现Delete按钮功能就有了 * 点击了“左滑出现Delete按钮”会调用这个方法 */ - (void)tableView:(UITableView...:(NSIndexPath *)indexPath { return @"删除"; } 左滑出现N个按钮 需要实现tableView代理方法 /** * 只要实现了这个方法,左滑出现按钮功能就有了...setEditing:YES animated:YES]; // 默认情况下,进入编辑模式时,左边会出现一排红色“减号”按钮 在编辑模式多选 // 编辑模式时候可以多选 self.tableView.allowsMultipleSelectionDuringEditing...= YES; // 进入编辑模式 [self.tableView setEditing:YES animated:YES]; // 获得选中所有 self.tableView.indexPathsForSelectedRows

    1.8K60

    iOS开发之SQLite--C语言接口规范(五)——iOS开发使用SQLite实例

    本篇博客就使用前面操作SQLite知识来实现如何去插入,删除更新数据。然后再把操作SQlite数据库常用方法进行一个封装。...因为本实例要对数据库数据进行modify(修改)操作 ,在iOS系统上呢,为了安全起见,在Bundle数据库资源是不允许进行数据插入修改删除操作。...三、实例实现   调用上述简单封装方法实现实例,对Cars.sqlite数据其中一个进行操作。...先读取数据库数据,在TableView上进行加载,然后可以对数据进行添加删除操作,更新操作就不做演示了。在插入操作中有如果有这条数据就进行Replace,这变相是一个update操作。   ...下方Demo实现并没有什么困难之处,就是对TableView简单操作,如果你感兴趣的话,可以Github上进行clone,然后进行扩展,添加上搜索,更新等功能

    1.8K60

    JavaFX-TableView详解

    前言 最近在着手一个学生管理系统编写,涉及到TableView使用,这前前后后也有了些经验想法想要记录分享一下(事实上我正在想要用html网页代替界面),更多是学习之用。.../blog/2015/04/doc03_tableview/ 官方文档:http://docs.oracle.com/javafx/2/ui_controls/table-view.htm TableView...TableViewObservableList集合 } }); 添加行删除也是同样操作,可以直接修改TableView维护集合来完成。...增加列,删除列 这就不仅仅要删除集合数据,还要从表格里面的Columns集合删除相应数据才可以,或许你还会在删除增加中加入一定判断来保证操作正确性: table.getColumns()....add(tempCol); // 列表显示新增列 table.getColumns().remove(index); // 删除index位置列 监听列变化 你大可以选择向源文件那样

    3.4K60

    实战LitePal(Android_Persistent Technology)

    LitePal是一款开源Android数据库框架,采用了对象关系映射(ORM)模式,将平时开发时最常用一些数据库功能进行了封装,使得开发者不用编写一SQL语句就可以完成各种建、増删改查操作。...调用 DataSupport.deleteAll()  方法  来删除数据,第一个参数用于指定删除哪张数据,Book.class就意味着删除Book数据,后面的参数用于指定约束条件; 注意:...同样,类似于updateAll(),如果不指定约束条件如 —— DataSupport.deleteAll(Book.class) ;,意味着你要删除所有数据; ?...---- 总结:LitePal将面向对象语言和面向关系数据库之间建立了一种映射关系,使用了LitePal,我们就可以用面向对象思维来实现同面向关系数据库一样功能了,十分魔法痛快!...补充: 1.模型类映射为关系型;类属性变量即为列; 2.模型类属性变量可以在实例化之后用来暂时存储数据; 3.模型类getset方法则用来对模型类属性值进行操作。

    82730

    基于Excel2013PowerQuery入门

    删除前三1.png ? 删除前三2.png ? 打开左边查询栏1.png 点击上图所示按钮,出现下图所示界面。 ? 打开左边查询栏2.png ? 追加查询1.png ?...关闭并上载1.png 点击上面的按钮,回到Excel界面, 出现下图所示工作簿查询。 ? 关闭并上载2.png 从上图可以看出一店6377增加到10739。...2.数据行列管理及筛选 删除 打开下载文件02-数据行列管理及筛选.xlsx,出现如下图所示。 ? 删除空行1.png 如下图所示,选定要加载区域,即A3:C25区域 ?...加载数据至查询编辑器.png 选定日期这一列,将数据类型改为整数。 ? image.png ? 删除错误.png ?...成功删除错误.png 7.转置反转 打开下载文件07-转置反转.xlsx,如下图所示。 ? 打开文件图示.png ? 加载数据到PowerQuery.png ?

    10.1K50
    领券