如何根据文本字段输入从JTable中删除行

时间:2014-02-04 13:58:11

标签: java swing netbeans jtable

我正在使用netbeans,我在删除jTable中的行时遇到了麻烦。 我想使用文本字段和按钮删除数据。我尝试过类似的东西但不起作用:

private void btnDelActionPerformed(java.awt.event.ActionEvent evt) {
String text2 = (String)jTextField2.getText();
DefaultTableModel model = (DefaultTableModel)jTable2.getModel();
if (!text2.equals(model)){
do {
String [] row = {text2};
while(!text2.equals(model));
model.removeRow(WIDTH);
} 
}

我也试着像这样做,但仍然不起作用:

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
   String text = (String)jTextField1.getText();
   DefaultTableModel model = (DefaultTableModel)jTable2.getModel();
   for (int i = 0; i < model.getRowCount(); i++)
     {
     for(int j = 0; j < model.getColumnCount(); j++) {
        model.setValueAt(text, i, j);
    }
  }    

有什么想法吗?请让我容易理解。 我真的是java的初学者,我不知道我是否使用了正确的代码。

2 个答案:

答案 0 :(得分:1)

说你有这个数据

First Name        Last Name

  Lebron           James
  Michael          Jordan
  Kobe             Bryant

您要做的是循环浏览模型,并根据您要检查的列,这将是您传递给column的{​​{1}}。所以你可以做这样的事情

getValueAt(row, column)

我对private void jButton1ActionPerformed(ActionEvent evt) { String name = jTextField1.getText(); DefaultTableModel model = (DefaultTableModel)jTable1.getModel(); for (int i = 0; i < model.getRowCount(); i++) { if (((String)model.getValueAt(i, 0)).equals(name)) { model.removeRow(i); break; } } } 使用0,检查getValueAt()列。如果名称等于,则删除该行。

如果我输入First NameLebron的行将被删除。

答案 1 :(得分:0)

while(i < tableModel.getRowCount()) {
    //if the value at (i, 0) match the specified value the row will be removed

if the row removed all row will move up and their index will be changed
so you have to add a condition if the value from the table doesn't match 
the specified value the iterator i will iterate by one to jump to the next 
row


if (((String)tableModel.getValueAt(i, 0)).equals(value)) {
    tableModel.removeRow(i);
}else {
    ++i;
}

}