Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么.setText()会导致ClassCastException?_Java_Swing_Jtable_Jtextfield - Fatal编程技术网

Java 为什么.setText()会导致ClassCastException?

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

当我试图将JTable(
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));