#java #swing #jtable #classcastexception
#java #swing #jtable #classcastexception
Вопрос:
Моя проблема в этом коде:
int rowToTable = table.getSelectedRow();
int bookId = (int)table.getValueAt(rowToTable, 0); // line 158
Каково решение?
Мне нужно int
значение BookID, а не 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)
Комментарии:
1. Не могли бы вы опубликовать трассировку стека, пожалуйста?
2. какие объекты у вас есть в этой таблице?
3. @StefanBeike
id
,name
isbn
borrowedStatus
иDate
.4. Если вы знаете, что это может быть преобразовано в целое число, используйте Integer.parseInt() для значения в таблице. Или, что еще лучше, при создании табличной модели используйте Integer вместо String
5. @user3808021: Попробуйте
Integer.valueOf(table.getValueAt(rowToTable, 0)).intValue();
Ответ №1:
Похоже, что у вас есть строковые значения в этой таблице. В этом случае:
int value = Integer.parseInt((String) table.getValueAt(rowToTable, 0));
Ответ №2:
Если вы точно знаете, что содержимое этого столбца является целым числом, то вместо приведения типа к int просто используйте Integer#parseInt()
int bookId = Integer.parseInt((String)table.getValueAt(rowToTable, 0));
Надеюсь, это поможет.
Комментарии:
1. В этом говорится:
incompatible types, Object cannot be converted to String
Ответ №3:
попробуйте это решение:
int rowToTable = table.getSelectedRow();
int bookId = Integer.valueOf((String)table.getValueAt(rowToTable, 0));
или
int bookId = Integer.parseInt((String)table.getValueAt(rowToTable, 0));
valueOf
внутри также есть parseInt
.