从Jtable返回一个double值

时间:2014-11-30 21:53:39

标签: java jtable row

尝试返回特定的单元格。用户选择一行,该值将转换为double。 该列始终是3号。这是我到目前为止所做的尝试,但我得到一个错误,说无法将对象转换为双重

        numberRow = TOrders.getSelectedRow();
        TOrders.getSelectedRow();
        subCost = TOrders.getModel().getValueAt(numberRow, 3);

需要帮助!!!

2 个答案:

答案 0 :(得分:0)

您正在检索Object而不是double。您需要cast将其设为Double,以便能够将其视为:

subCost = (Double) TOrders.getModel().getValueAt(numberRow, 3);

此外,

TOrders.getSelectedRow();

没有做任何有用的事情。你应该删除这一行。

答案 1 :(得分:0)

TableModel接口的getValueAt()方法返回Object的后代。您的错误消息表明它是一个字符串。因此,您似乎应该将返回的Object引用转换为带有强制转换的String引用。然后使用Double.parseDouble()将该String转换为double。如果字符串不是有效的double,则parseDouble将抛出NumberFormatException:

try {
    numberRow = TOrders.getSelectedRow();
    String temp = (String) TOrders.getModel().getValueAt(numberRow, 3);
    subCost = Double.parseDouble(temp);
}
catch (NumberFormatException e)
{
    JOptionPane.showMessageDialog(null, "Item in table was not a valid double - "
             + e.getMessage() );
}

如果您想处理货币数据,您可能希望将其放在BigDecimal中。使用不包含有效十进制数字的String构造BigDecimal会引发NumberFormatException。

try {
    numberRow = TOrders.getSelectedRow();
    String temp = (String) TOrders.getModel().getValueAt(numberRow, 3);
    subCost = new BigDecimal(temp);
}
catch (NumberFormatException e)
{
    JOptionPane.showMessageDialog(null, 
         "Item in table was not a valid decimal number");
}