我有一个包含7列和一些行的表,我想在表中乘以单元格。
假设某人在(第0行,第0列)和(第0行,第3列)中输入值时,最终答案将自动出现在(第0行,第6列)
这是我单击某些单元格时的代码。
没用
Double a=Double.parseDouble ((String) jTable.getValueAt (0,0);
Double b=Double.parseDouble ((String) jTable.getValueAt (0,3);
Double c=a*b;
jTable.setValueAt(c,0,6);
答案 0 :(得分:1)
首先,如果您的列包含数字,则应在模型中存储Double
值,而不是字符串。
因此,您需要重写getColumnClass(...)
的{{1}}方法,以告知表存储在列中的数据类型,以便表可以使用适当的渲染器/编辑器。
类似:
TableModel
您还将覆盖@Override
public Class getColumnClass(int column)
{
switch (column)
{
case 0: return Double.class;
case 3: return Double.class;
case 6: return Double.class;
default: return Object.class;
}
}
方法以防止第6列中的数据被编辑,因为其值始终是在第0列和第3列中找到的值的结果。
有人输入值时
只要表中的数据发生更改,TableModel就会更新。
所以一种方法是重写TableModel的isCellEditable(...)
方法以重新计算第6列的值。
基本逻辑是:
setValueAt(...)
阅读How to Use Tables的Swing教程中的部分,以获得更多信息。