从 JList 中删除一行

Posted

技术标签:

【中文标题】从 JList 中删除一行【英文标题】:Delete a row from a JList 【发布时间】:2012-11-20 14:43:55 【问题描述】:

我正在制作一个项目,对于这个项目,我需要从 Jlist 中删除一个特定的行。 Jlist 由数据库中的数据填充。

现在,当我单击我的 Jbutton 时,我可以从列代码中删除一行,但是当我想删除一个新行时,我需要在新代码中更改查询。

执行的操作:

@Override
    public void Delete() 
        Connection conn;
        String sql = "DELETE FROM OEFENINGEN WHERE CODE = '5'"; 

        try
            conn = OpenConnection();
            stmt = conn.createStatement();

            int result = stmt.executeUpdate(sql);
            if(result > 0)
                System.out.println("Record Delete");
             else
                System.out.println("Record NOT Delete");
            
        catch (SQLException e)
            e.printStackTrace();
         finally 
            if (stmt != null)
                try
                    stmt.close();
                catch (SQLException e)
                    e.printStackTrace();
                  
            
        
           
    

我希望当您在 JList 中选择一个随机行时,当您单击 Jbutton 时,他会从数据库和 Jlist 中删除该行。

【问题讨论】:

从数据库中删除行后,用数据库中的实际数据重新加载JList。 目前我删除的不是随机选择的行,而是 WHERE CODE = '5' 所以他只删除代码为 5 而不是 6 7 或 8 的行。如果我想删除 6我需要在 WHERE CODE = '6' 中更改它,但我想在不更改代码的情况下删除 6,只需在 JList 中选择它并单击按钮。 您到底遇到了什么问题?你不知道如何从数据库中删除一条记录,或者如何从JList中删除一行,或者如何确定JList中当前选中的行? 请注意,您不应在事件调度线程上更新您的数据库。长时间运行的操作应该发生在后台线程上。更多信息请咨询Swing concurrency tutorial 【参考方案1】:

确保列表的每一行都是代表数据库中数据的实际对象(或至少携带可识别所需的信息)

为自己创建一个Action,将JList`ListModel` 的引用传递给它。

actionPerformed 方法被触发时,检查选择了哪些行,从ListModel 中提取行数据并调用删除方法。在 delete 方法中,使用行中的信息来确定删除语句的条件

【讨论】:

以上是关于从 JList 中删除一行的主要内容,如果未能解决你的问题,请参考以下文章

刷新 JFrame 中的 JList

JList 右键单击​​显示菜单(使用、删除、取消)

如何为列表框(JList)动态添加删除项?在线等

java swing 中的列表框JList如何在程序中动态的添加和删除元素

e778. 在JList中加入和删除项

禁用 JList 中的项目