2016-10-28 4 views
-1

Почему этот код бросает ClassCastException .when Я пытаюсь установить выбранное значение строки в JTable (ie.showItem) в TextField (ie.itemCode) .Exception является Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.StringПочему .setText() вызывает исключение ClassCastException?

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)); 

       } 
      } 
     }); 
+1

Поскольку объект, который возвращается из 'getValueAt' - целое, как указано сообщением об исключении, невозможно передать в виде строки. Это не имеет никакого отношения к 'setText' и вызвано выражением, используемым в качестве аргумента. Был ли еще вопрос? – user2864740

+0

@Mukund Show itemCode класс –

+0

использование .toString() способ – HaroldSer

ответ

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()); 

, чтобы увидеть, какой тип объекта в таблице есть в этой ячейке.

0

Вы не можете бросить Integer к String, потому что IntegerнеString, то есть Integer не подкласс String. Тем не менее, вы можете передать Integer в String, так как все Object имеют метод toString().

Integer a = new Integer(10); 
String myString = "" + a; 
//Is the same as String myString = "" + a.toString(), so you could do just 
//String myString = a.toString(); 

Надеюсь, я помог.

Имейте славный день. :)

Смежные вопросы