Java 为什么.setText()会导致ClassCastException?
当我试图将JTable(Java 为什么.setText()会导致ClassCastException?,java,swing,jtable,jtextfield,Java,Swing,Jtable,Jtextfield,当我试图将JTable(ie.showItem)的选定行值设置为文本字段(ie.itemCode)时,为什么这段代码会抛出ClassCastException。线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常是异常:java.lang.Integer不能转换为java.lang.String showItem = new JTable(); showItem.addMouseListener(new MouseAdapte
ie.showItem
)的选定行值设置为文本字段(ie.itemCode
)时,为什么这段代码会抛出ClassCastException
。线程“AWT-EventQueue-0”java.lang.ClassCastException中的异常是异常:java.lang.Integer不能转换为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));
}
}
});
首先,不要试图在一条语句中编写所有代码。使用多个语句更易于调试:
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() );
要查看表在该单元格中的对象类型。也许您应该选中此项 为了
不能将
整数
强制转换为字符串
,因为整数
不是字符串
,也就是说,整数
不是字符串
的子类。但是,您可以将整数
传递给字符串
,因为所有对象
都有toString()
方法
整数a=新整数(10);
字符串myString=”“+a;
//与字符串myString=“”+a.toString()相同,因此您可以
//字符串myString=a.toString();
我希望我帮了忙
祝你今天愉快。:) 因为从
getValueAt
返回的对象(由异常消息指示的整数)不能转换为字符串。这与setText
无关,是由用作参数的表达式引起的。还有其他问题吗?@Mukund show itemCode classuse.toString()方法
itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0));