Я нашел несколько потоков с аналогичной проблемой, но ничего не работало для меня. Я пытаюсь получить двойное и строковое значение из jtable. Я использую DefaultTableModel и не перегрузить метод getCOlumnClass:Получение двойных значений из jtable
private void initTable()
{
String tableColumns[] = { language.getTranslatedPhrase(MultilanguageUtil.Amount),
language.getTranslatedPhrase(MultilanguageUtil.Ingredient),
language.getTranslatedPhrase(MultilanguageUtil.Unit) };
tableModel = new DefaultTableModel(tableColumns, 0) {
private static final long serialVersionUID = 1L;
@Override
public Class<?> getColumnClass(int column) {
switch (column) {
case 0:
return Double.class;
case 1:
return String.class;
case 2:
return Units.class;
default:
return String.class;
}
}
};
table = new JTable(tableModel);
Я ожидаю, что двойные значения в первом столбце, но когда я пытаюсь получить значение с:
int rowCount = tableModel.getRowCount();
for (int i = 1; i <= rowCount - 1; i++)
{
double doubleValue = (Double) tableModel.getValueAt(i, 0);
}
I получаю это исключение:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
Я также попытался это:
Object objValue = tableModel.getValueAt(i, 0);
double doubleValue = ((Double) objValue).doubleValue();
но я получаю то же исключение.
когда я Выполнение выражений
System.out.println(table.getColumnClass(0));
это говорит
class java.lang.Double
так, что, кажется, правы, но я все еще получаю исключение, которое говорит, что его целое, и я не могу бросить его на двойной ...
Я надеюсь, что кто-то может мне помочь, и извините за мой плохой английский! (не мой первый язык)
спасибо! Когда я уверен, что значения в ячейках фактически являются двойными значениями, это работает без проблем: 'double doubleValue = (double) tableModel.getValueAt (i, 0);' Ваше решение работает хорошо, но я думаю, что я должен убедиться, что в ячейках фактически есть двойные значения. – Julian