如何使用单个删除按钮从不同表中删除行

时间:2013-12-31 15:20:36

标签: java swing jtable

我的应用程序中有一个标签式布局  请参阅此图片

Tabbed Layout

因此,您可以在上面的图片中看到我在第一个标签中的2个不同标签中有2个表(SALON STOCK标签) 我想删除选定的行 做的是:removebutton的actionPerformed方法

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

这适用于当前标签(SALON TAB) 但如何为其他标签(待售股票)实施相同的内容。

进一步详情:

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

我想从表中删除所选行而不管任何Tab

代码:初始化

                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

2 个答案:

答案 0 :(得分:1)

  

如果他们共享同一模型,他们如何拥有不同的数据,请解释

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

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

答案 1 :(得分:0)

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