JTable.getValueAt(...)中的ClassCastException

时间:2014-07-07 12:35:35

标签: java swing jtable classcastexception

我的问题在于此代码:

int rowToTable = table.getSelectedRow();
int bookId = (int)table.getValueAt(rowToTable, 0);  // line 158

解决方案是什么?

我需要bookID的int值,而不是Object

堆栈跟踪:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
at Project.BookPage_Admin.dellAction(BookPage_Admin.java:158)
at Project.BookPage_Admin.actionPerformed(BookPage_Admin.java:126)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

3 个答案:

答案 0 :(得分:2)

看起来你在该表中有String值。在那种情况下:

int value = Integer.parseInt((String) table.getValueAt(rowToTable, 0));

答案 1 :(得分:1)

如果您确定该列的内容是整数而不是类型转换为int只使用Integer#parseInt()

 int bookId = Integer.parseInt((String)table.getValueAt(rowToTable, 0));

希望这有帮助。

答案 2 :(得分:1)

试试这个解决方案:

int rowToTable = table.getSelectedRow();
int bookId = Integer.valueOf((String)table.getValueAt(rowToTable, 0));

int bookId = Integer.parseInt((String)table.getValueAt(rowToTable, 0));

valueOf也是parseInt