【问题标题】:How should I calculate value in JTable column value properly?我应该如何正确计算 JTable 列值中的值?
【发布时间】:2013-04-16 10:42:32
【问题描述】:

我有一个JTable,我想添加列值。我正在尝试这段代码:

try{
    double t = 0.00;
    DecimalFormat df = new DecimalFormat("0.00");
    int rows = empTbl.getRowCount();
    for(int row =0; row<=rows; row++) 
    {
        String am = (String) empTbl.getValueAt(row, 7);
        double d = (double) df.parse(am);
        double ans = d+t;
        jLabel7.setText("Total Sale : "+ans);
    }
}
catch(ParseException ex){ }

为什么这段代码不起作用?

【问题讨论】:

  • double ans = d+t, t 似乎总是 0.0。你得到什么 o/p?
  • “为什么这段代码不起作用?”catch(ParseException ex){ } 更改为 catch(ParseException ex){ ex.printStackTrace(); } 并重试。 不要忽略异常。

标签: java swing parsing jtable


【解决方案1】:
  • 为了尽量避免在 Java 中进行任何解析,有适当的数据类型

  • 直接向 XxxTableModel 或 JTable 添加 Double / Long / Integer 值(取决于未知代码,您的问题)

  • 将XxxTableModel中的getColumnClass改为Double / Long / Integer

  • 添加 TableModelListener 并覆盖 setValueAt(proper formula),然后在 JTables 单元格中的值发生变化时允许使用公式

  • Double / Float hasn't decimal places (Idiotic thread, with interesting!!! downvoters)

  • 使用 XxxTableCellRenderer 格式化输出到 Swing GUI

【讨论】:

  • +1 用于使用正确的数据类型。此外,渲染器应该使用 DecimalFormat。有关示例,请参见 Table Format Renderers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2018-12-29
  • 1970-01-01
  • 2020-12-04
  • 2012-05-21
  • 1970-01-01
相关资源
最近更新 更多