remove row from jtable

蹲街弑〆低调 提交于 2019-12-12 09:53:48

问题


i want to remove a row from jtable in swing form

Jtable >> dragged autmatically from Netbeans swing ( Netbeans 8 )

private javax.persistence.EntityManager entityManager;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
private java.util.List<javaapplication1.Orders> ordersList;
private javax.persistence.Query ordersQuery;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;

Jtable data >> bind auomatically from MySQL database

i want to delete the row from the jtable only not from the database

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // TODO add your handling code here:

    int selectedRow =  jTable1.getSelectedRow();
    if(selectedRow!=-1)
    {
        try {
            jTable1.remove(selectedRow);
            jTable1.revalidate();
        } catch (Exception e) {
            e.getMessage();
        }

    }
} 

回答1:


At this line:

jTable1.remove(selectedRow);

This remove(int index) method doesn't do what you think it does. It is inherited from Container class and it is intended to remove components from a given container.

Instead of that you need to work with the TableModel and remove the selected row from it. Since you are using matisse (NetBeans' GUI Builder) then the table model attached to your table will be an instance of DefaultTableModel, so you can do as follows:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    int viewIndex = jTable1.getSelectedRow();
    if(viewIndex != -1) {
        int modelIndex = jTable1.convertRowIndexToModel(viewIndex); // converts the row index in the view to the appropriate index in the model
        DefaultTableModel model = (DefaultTableModel)jTable1.getModel();
        model.removeRow(modelIndex);
    }
}

Please take a look to:

  • How to Use Tables
  • JTable#convertRowIndexToModel(int rowIndex)
  • DefaultTableModel#removeRow(int rowIndex)



回答2:


Working with JTableBinding:

private JTableBinding<LpDetail, LpMaster, JTable> lpDetailListTableBinding;

you can perform this over the pojos directly:

protected void btnEliminarItemActionPerformed(ActionEvent e) {

        int sustract = tb_DetLP.getSelectedRow();

        if (sustract >= 0) {
            selectedItem.setLpDetailList(org.jdesktop.observablecollections.ObservableCollections
                    .observableList(selectedItem.getLpDetailList()));
            selectedItem.getLpDetalleList().remove(sustract);                       
        }

    }


来源:https://stackoverflow.com/questions/27425476/remove-row-from-jtable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!