2012-10-26 4 views
2

Java에서 JTables 및 Vectors를 처음 접한다면 흥미로운 걸림돌을 맞았습니다. 내 코드는 제대로 컴파일,하지만 난 그것을 실행에 갈 때, 나는 다음과 같은 예외 얻을 : 스레드 "주요"java.lang.ClassCastException가에서Java Vector 및 JTable 사용시 문제가 발생했습니다.

예외 : java.lang.String의가있는 java.util 캐스트 할 수없는 .Vector

내가 어디에서 캐스팅하는지 알지 못하기 때문에 약간 혼란 스럽다.

Vector<String> columnNames = new Vector<String>(); 
columnNames.add("Tasks"); 

Vector<String> testing = new Vector<String>(); 
testing.add("one"); 
testing.add("two"); 
testing.add("three"); 

table = new JTable(testing, columnNames); // Line where the error occurrs. 
scrollingArea = new JScrollPane(table); 

내 목표는 JPanel의 테이블을하는 것입니다,하지만 난 여기에 JPanel의를 확장하는 클래스입니다> < taskPanel의 벡터를 사용하려고하면 오류의 동일한 유형이 있습니다

class taskPanel extends JPanel 
{ 
    JLabel repeat, command, timeout, useGD; 

    public taskPanel() 
    { 
     repeat = new JLabel("Repeat:"); 
     command = new JLabel("Command:"); 
     timeout = new JLabel("Timeout:"); 
     useGD = new JLabel("Update Google Docs:"); 

     add(repeat); 
     add(command); 
     add(timeout); 
     add(useGD); 
    } 
} 
+0

스택 추적으로 전체 코드와 예외를 표시 할 수 있습니까? 개인적으로 나는 –

+0

.. 의심이 당신이 가진 문제가있는 줄은 다음 링크에 관련이 질문에 뭔가가 [벡터 예 ] [1] [1] : HTTP : // 유래 .com/questions/1111745/how-to-create-an-of-string-vectors-in-java – sunleo

답변

2

당신은 여기 VectorVectors의를 사용해야합니다 : 다중 열 Vector 테이블 모델의 경우

Vector<Vector> rowData = new Vector<Vector>(); 
rowData.addElement(testing); 

JTable table = new JTable(rowData, columnNames); 

는이 example를 참조하십시오.

+0

벡터 > 문제는 2 차원 구조가 필요할 때 1 차원 구조를 전달한다는 것입니다. – Jay

+1

이것은 문제가되지 않습니다. 외부 'Vector'의 각 엔트리는 행 데이터입니다. 내부 Vector의 각 엔트리는 필요한만큼의 열을 가질 수있는 열 데이터입니다. – Reimeus

+0

그게 효과가있어, 고마워. –

0

주조는 < String>입니다. 현재는 벡터 문자열을 사용할 수 없습니다. this을보십시오.

3

testing 벡터는 각 행에 모든 열에 대한 데이터가 포함되어 있다고 가정하므로 vector of vectors이어야합니다.

Vector<Vector> testing = new Vector<Vector>(); 
    Vector<String> rowOne = new Vector<String>(); 
    rowOne.add("one"); 
    Vector<String> rowTwo = new Vector<String>(); 
    rowTwo.add("two"); 
    Vector<String> rowThree = new Vector<String>(); 
    rowThree.add("three"); 

    testing.add(rowOne); 
    testing.add(rowTwo); 
    testing.add(rowThree); 

    table = new JTable(testing, columnNames); // should work now 
    scrollingArea = new JScrollPane(table); 
+0

또 다른 정답은, 나는 단지 내가 양쪽에 답을 줄 수 있었으면 좋겠다. –

관련 문제