如何在没有任何文本字段的情况下乘以jtable中的单元格

时间:2018-11-27 18:41:47

标签: java swing

我有一个包含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);

1 个答案:

答案 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教程中的部分,以获得更多信息。