Jtable - getvalueAt()问题

时间:2012-03-29 07:38:23

标签: java swing jtable tablemodel

我想知道为什么我的getvalueAt()在按下 Enter 时选择旧数据。
我尝试了所有更新和表更改模块,但我无法正常工作。我在JTable中制作了一个类似Excel表格的结构,其中一行更新为另一行。

public void setValueAt(Object aValue, int row, int column) {
        if(column == 2 || column == 3 || column == 4 || column == 5)
    {
        System.out.println("2 is: "+getValueAt(row, 2));
        System.out.println("3 is: "+getValueAt(row, 3));
        System.out.println("4 is: "+getValueAt(row, 4));
        long closingbalance = Long.parseLong(getValueAt(row,2).toString())
            + Long.parseLong(getValueAt(row,3).toString())
            - Long.parseLong(getValueAt(row,4).toString());
        System.out.println("closing: "+closingbalance);
        super.setValueAt(closingbalance,row, 6);
    }               
    super.setValueAt(aValue, row, column);
}

2 个答案:

答案 0 :(得分:1)

在您访问其他值时,验证您的CellEditor是否已结束以及您的TableModel是否处于一致状态。此example覆盖getValueAt()以获取相关单元格的值。为了避免这么多解析,您的TableModel可能只包含Long的实例。

假设您确实需要覆盖setValueAt(),则不清楚您使用的TableModel是什么。如果您要延长DefaultTableModel,则super.setValueAt()实施是合适的;如果你正在扩展AbstractTableModel,那么超级实现是空的,你的将需要触发相应的事件。

答案 1 :(得分:1)

我无法在另一个论坛上回答你的问题,因为一个新的论坛版本让我发疯了

  • 没有理由从JTable

  • 解析值
  • JTable实施所有重要数据类型

  • 示例herehere

  • 使用SSCCE

  • 更好地帮助您修改问题