【问题标题】:How to delete a row from a JTable based on a text field input如何根据文本字段输入从 JTable 中删除一行
【发布时间】:2018-02-16 19:42:38
【问题描述】:

我正在使用 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的初学者,我不知道我是否使用了正确的代码。

【问题讨论】:

  • @Pragnesh Khalas。感谢编辑!

标签: java swing netbeans jtable


【解决方案1】:

假设你有这些数据

First Name        Last Name

  Lebron           James
  Michael          Jordan
  Kobe             Bryant

您要做的是遍历模型并根据您要检查的列,将column 传递给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 Name 列。如果名称相等,则删除该行。

如果我输入LebronLebron James 的行将被删除。

【讨论】:

    【解决方案2】:
    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;
    }
    
    }  
    

    【讨论】:

      猜你喜欢
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 2018-02-24
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多