java - 我想在java中将表格数据打印到Textarea
问题描述
在java中,我想将jTable(Table)数据打印到Textarea(我的代码中的“AREA”),但是当我运行下面给出的这段代码时,它不会打印文本区域中的所有行和列数据并在输出中显示一条消息那
输出错误是
" 线程 "AWT-EventQueue-0" java.lang.ClassCastException 中的异常:无法将类 java.lang.Integer 转换为类 java.lang.String(java.lang.Integer 和 java.lang.String 在模块 java.lang.String 中)加载程序'bootstrap'的基础)“
我使用的代码
DefaultTableModel model1 = (DefaultTableModel) BILL_table.getModel();
int nRow = model1.getRowCount(), nCol = model1.getColumnCount();
Object [][] tableData = new Object [nRow][nCol];
for(int i = 0 ; i < nRow ; i++)
{
for(int j = 0 ; j< nCol ; j++)
{
tableData[i][j] = model1.getValueAt(i, j);
AREA.append ((String) tableData [i][j] + "\t");
}
AREA.append("\n");
}
解决方案
问题大概出在这里:
AREA.append ((String) tableData [i][j] + "\t");
它似乎tableData[i][j]
是Integer
(a number) 的一个实例,当然不能转换为字符串。正确的做法是将其转换为字符串:
AREA.append (tableData[i][j].toString() + "\t");
请注意,您甚至不必明确地执行此操作,因为只要您将对象与字符串连接起来,该转换就会自动发生。所以你可以写
AREA.append (tableData[i][j] + "\t");
即使tableData[i][j]
碰巧是后者也会起作用null
(在这种情况下前者会抛出 a NullPointerException
)。
推荐阅读
- javascript - 在反应后刷新表
- angular - 没有可用项目时如何在自动完成输入周围显示消息
- c - 为什么 ScanF 从字符串中获取两个输入
- mysql - 使用 Laravel 获取每个 branch_id 的成员总数
- jupyter-notebook - Jupyter 内核未启动
- python - 根据数据框中 2 列的匹配值创建新列
- ios - UI 应用检查器(如 Appium 中的检查器)如何工作?
- mysql - 设置 Laravel Valet Mysql 问题
- css - 使用 X 电子表格库未正确加载字体系列“Helvetica”
- pandas - 使用 Pandas 合并的精确匹配