【问题标题】:How to remove row from Different JTables with Single Remove Button如何使用单个删除按钮从不同的 JTable 中删除行
【发布时间】:2014-01-01 09:29:36
【问题描述】:

我的应用程序中有一个选项卡式布局 请看这张图片

如上图所示,我在第一个选项卡(沙龙库存选项卡)中有 2 个不同选项卡中的 2 个表 我想删除选定的行 做了什么:removebutton的actionPerformed方法

        int row_num =jTable4.getSelectedRow();
    try{dtm_stock.removeRow(row_num);} 
    catch(ArrayIndexOutOfBoundsException e){
        JOptionPane.showMessageDialog(this,"Please select a Product");
    }

这适用于当前标签(沙龙标签) 但是如何为另一个选项卡(待售股票)实现相同的功能。

更多细节:

我在 2-diff 选项卡中有 2-table,并且两者都有 2-不​​同的 TableModel(默认) 在初始化时数据设置为空 之后从数据库中检索数据并将其设置为相应的 TableModel。 现在有一个删除按钮,它将从表中删除选定的行

我想从表格中删除选定的行,而不考虑任何选项卡

代码:初始化

                jTable4 = new javax.swing.JTable();
                dtm_stock = new DefaultTableModel(new Object [][] {
        {null,null, null, null},
        {null,null, null, null}
    },
    new String [] {
        "ID","NAME", "PRICE", "QUANTITY"
    });
    jTable4.setModel(dtm_stock
    );

添加数据:

//-----ADD STOCK TO THE STOCK TABLE --------------//

    try {

    ResultSet r7 = con.createStatement().executeQuery("select * from stock");
        while(r7.next()){
            dtm_stock.insertRow(dtm_stock.getRowCount(),new Object[]{r7.getString("id"),r7.getString("p_name"),r7.getString("price"),r7.getString("qty")});
        }
    } catch (SQLException e) {

        JOptionPane.showMessageDialog(this,e.toString());
    }

如果我将相同的 TableModel 添加到另一个表中,那么数据将进入该表,而当前为空白:

这似乎成功了:`

int selectedIndex = jTabbedPane2.getSelectedIndex();

    if(selectedIndex == 0 ){
        int row_num =stock_table.getSelectedRow();
    try{
        dtm_stock.removeRow(row_num);

    }
    catch(ArrayIndexOutOfBoundsException/*|SQLException*/ e){
        JOptionPane.showMessageDialog(this,"Please select a Product");
    }
    }//if

    if(selectedIndex == 1){
        int row_num =sale_Stock_table.getSelectedRow();
    try{
        dtm_sale_stock.removeRow(row_num);

    }
    catch(ArrayIndexOutOfBoundsException/*|SQLException*/ e){
        JOptionPane.showMessageDialog(this,"Please select a Product");
    }
    }

从这里: enter link description here

【问题讨论】:

  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 两个表应该共享一个共同的表模型;如果不是,这两个表模型应该共享一个公共数据源。
  • @trashgod - 如果他们共享相同的模型,他们怎么会有不同的数据,请解释一下。
  • 如果两个表共享一个共同的表模型,使用@camickr的approach。如果两个表模型不同,它们应该共享一个公共数据源。

标签: java swing jtable


【解决方案1】:

如果他们共享相同的模型,他们怎么会有不同的数据,请解释

您可以控制在视图中显示哪些列 (JTable)。

看JTable的removeColumn(...)方法。它从视图中删除一列。但是数据仍然在 TableModel 中。

【讨论】:

  • 你的想法也是对的,但问题是在表模型中设置数据的查询对于每个表都不同,所以对我来说有点复杂。
【解决方案2】:

如果我理解正确,您可以放置​​一些标志来保存当前可见选项卡的值,并使用 if 语句从正确的模型中删除行。另一方面,更好的解决方案是创建某种控制器。控制器将存储活动选项卡,并具有 removeRow 方法。切换选项卡会触发事件,因此控制器会知道从哪个选项卡删除行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-22
    • 2014-06-21
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多