为什么此代码抛出ClassCastException
。当我尝试将JTable的所选行值(ie.showItem
)设置为TextField(ie.itemCode
)时。异常为Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
showItem = new JTable();
showItem.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
int rowCount=showItem.getRowCount();
if(rowCount>=1){
//Why it is throwing ClassCastException
itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0));
}
}
});
答案 0 :(得分:1)
首先,不要尝试在一个语句中编写所有代码。使用多个语句更容易调试:
itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0));
可以很容易地写成:
Object value = showItem.getValueAt(rowCount, 0);
itemCode.setText( value.toString() );
注意,由于您有一个包含该值的变量,因此无需再调用两次getSelectedRow()方法。
然后您可以随时添加一些调试代码,如:
Object value = showItem.getValueAt(rowCount, 0);
System.out.println( value.getClass() );
查看您的表格在该单元格中的对象类型。
答案 1 :(得分:0)
也许你应该检查一下。
How do I convert from int to String?
代表
itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0));
答案 2 :(得分:0)
您无法将Integer
转换为String
,因为Integer
不是 String
,即{{} 1}}不是Integer
的子类。但是,您可以将String
传递给Integer
,因为所有String
都有Object
方法。
toString()
我希望我有所帮助。
祝你有个愉快的一天。 :)