java - JTable 自动空值读取问题
问题描述
我正在从 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++;
}
}
}
我从中读取值的表:
输出 :
解决方案
在我看来,您的编辑器仍处于活动状态,因此您在编辑器中键入的值尚未保存到 TableModel。
在按钮的 ActionListener 中,您需要添加如下逻辑:
if (table.isEditing())
table.getCellEditor().stopCellEditing();
或者,当您创建表时,您可以使用:
JTable table = new JTable(...);
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
查看:表格停止编辑以获取更多信息。
推荐阅读
- java - 在 javafx 表中填充数据时出现 java.lang.reflect.InvocationTargetException
- bigcommerce - 使用电子邮件密码进行 Bigcommerce 身份验证
- python - 从包含 str 和 int python 的列表中查找最大 int 值
- django - 子路径的 Django 错误 url 模式
- node.js - Mongoose findOne 功能不适用于身份验证
- php - 无法使用 laravel 5.5 建立 laravel 关系
- java - 如何分析这个程序中所有递归调用的控制流程?
- asp.net - 从 Dto 获取定义的路由
- node.js - 使用节点js在浏览器上设置cookie
- wordpress - 站点升级:更新+https vs 2 阶段迁移