JTable自动读取空值问题

JTable Automatic Empty Value Reading Issue

我正在从 JTable 读取第二列的值。一切都完美无缺,直到最后一行。当我从第二列读取最后一行的值时,它从单元格中读取空字符串。我花了一整天的时间来寻找这个问题的解决方案,但不幸的是结果出乎意料。

代码如下。

DefaultTableModel tableModel = (DefaultTableModel) jTable1.getModel();
int rows = Integer.parseInt(jTextField8.getText());
String strArr[] = new String[rows];
int count = 0;
System.out.println("Rows : "+rows);
for(int i=0; i<rows; i++){
    for(int j=0 ; j<3; j++){
        if(j==1){
            System.out.println(" i : "+i+" \tj : "+j);
            strArr[count] = (String)tableModel.getValueAt(i, j);
            System.out.println("Value \t: "+(String)tableModel.getValueAt(i, j));
            count++;
        }
    }
}

Table 我从哪里读取值:

输出:

在我看来,您的编辑器仍处于活动状态,因此您在编辑器中键入的值尚未保存到 TableModel。

在按钮的 ActionListener 中,您需要添加如下逻辑:

if (table.isEditing())
    table.getCellEditor().stopCellEditing();

或者,当您创建 table 时,您可以使用:

JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

查看:Table Stop Editing 了解更多信息。