2016-10-28 2 views
-1

ClassCastException를 던졌습니다 (ie.itemCode) .Exception 모두의 Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String.setText()가 ClassCastException을 발생시키는 이유는 무엇입니까? 나는 텍스트 필드에 (<code>ie.showItem</code>)의 JTable의 선택된 행의 값을 설정하려고 .when이 코드를 수행하는 이유

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'에서 반환 된 객체 (Integer)는 String으로 캐스팅 될 수 없기 때문에. 이것은'setText'와는 아무런 관련이 없으며 인수로 사용 된 표현식으로 인해 발생합니다. 또 다른 질문이 있었습니까? – user2864740

+0

@Mukund show itemCode 클래스 –

+0

.toString() 메서드 사용 – HaroldSer

답변

1

먼저 모든 작성하려고하지 않는 것입니다 귀하의 코드를 단일 문장으로 작성하십시오. 그것의 여러 문을 사용하여 디버깅하기가 쉽습니다 :

itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0)); 

쉽게 같이 쓸 수있다 : 당신이 것을 포함 된 변수를 갖고 있기 때문에 두 번 getSelectedRow() 메소드를 호출 할 필요가 없다

Object value = showItem.getValueAt(rowCount, 0); 
itemCode.setText(value.toString()); 

주 값.

그런 다음 당신은 항상 같은 일부 디버그 코드를 추가 할 수 있습니다

Object value = showItem.getValueAt(rowCount, 0); 
System.out.println(value.getClass()); 

이 표는 해당 셀에서이 객체의 유형을 볼 수 있습니다.

0

아마도 이것을 확인해야 할 것입니다. IntegerString하지 않기 때문에

How do I convert from int to String?

itemCode.setText((String)showItem.getValueAt(showItem.getSelectedRow(), 0)); 
0

을 위해 당신은 IntegerString의 서브 클래스가 아닌, 즉, IntegerString으로 캐스팅 할 수 없습니다. 그러나 모든 Object에는 toString() 방법이 있으므로 IntegerString으로 전달할 수 있습니다.

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

내가 도움을 주길 바랍니다.

좋은 하루 보내십시오. :)

관련 문제