Удалить строку из jtable
Я хочу удалить строку из jtable в форме свинга
Jtable >> автоматически перетаскивается из свинга Netbeans ( 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 >> связываются автоматически из базы данных MySQL
я хочу удалить строку из jtable только не из базы данных
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();
}
}
}
2 ответа
На этой линии:
jTable1.remove(selectedRow);
Этот метод удаления (int index) не делает то, что вы думаете, он делает. Он унаследован от класса Container и предназначен для удаления компонентов из данного контейнера.
Вместо этого вам нужно поработать с TableModel и удалить из него выбранную строку. Поскольку вы используете matisse (GUI Builder NetBeans), тогда модель таблицы, присоединенная к вашей таблице, будет экземпляром DefaultTableModel, поэтому вы можете сделать следующее:
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);
}
}
Пожалуйста, посмотрите на:
Работа с JTableBinding:
private JTableBinding<LpDetail, LpMaster, JTable> lpDetailListTableBinding;
Вы можете выполнить это над pojos напрямую:
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);
}
}