2014-02-17 5 views
0

이 그림에서는 반환 테이블의 헤드 값이 확인란에 표시됩니다. 여기 동적으로 jtable 내부에 jcheckbox를 설정하는 방법

는 오류가

enter image description here

이 발생한 이유를 모르겠어요 내가 그것을 시도했지만 ClassCastException이 때문에 문자열

캐스팅 부울 값의 발생

데이터베이스에서 값을 JTable의 내 코드는

static Object[][] data; 
String[] colName = {"Book", "Member", "Issue Date", "Return Date ", 
     "Remark","Return" }; 

List<Issue>issues=ServiceFactory.getIssueServiceImpl().findAllIssue(); 
data=new Object[issues.size()][6]; 


for(Issue issue:issues){ 

    data[i][0]=issue.getMemberId().getName(); 
    data[i][1]=issue.getBookId().getName(); 
    data[i][2]=issue.getIssueDate(); 
    data[i][3]=issue.getReturnDate(); 
    data[i][4]=issue.getRemark(); 
    data[i][5]=issue.getStatus(); 

    i++; 
} 
u는 여기이 공유하시기 바랍니다 답변에 대해 알고있는 경우3210

여기에 예외는

편집 ...

DefaultTableModel dtm = new DefaultTableModel(data, colName);{ 
    public Class getColumnClass(int c) { 
     switch (c) { 
      case 0: return Boolean.class; 
      default: return String.class; 
     } 
     } }; 
retunTable = new JTable(); 
retunTable.setModel(dtm); 
retunTable.getTableHeader().setReorderingAllowed(false); 


return retunTable; 

을 발생

 DefaultTableModel dtm = new DefaultTableModel(data, colName);{ 
    public Class getColumnClass(int c) { 
     switch (c) { 
      case 0: return Boolean.class; 
      default: return String.class; 
     } 
     } }; 

    dtm .addRow(data); 
retunTable = new JTable(); 
retunTable.setModel(dtm); 
retunTable.getTableHeader().setReorderingAllowed(false); 


return retunTable; 
+1

테이블 셀 렌더러를 구현해야합니다. – Sanjeev

+0

JTable 용 사용자 정의 셀 렌더러를 제공해야합니다. –

+0

'issue.getStatus()'가 반환하는 것은 무엇입니까? http://docs.oracle.com/javase/tutorial/uiswing/components/table.html에서'ColorRenderer' 클래스를보십시오. 'String' 또는'boolean'? – MadProgrammer

답변

5

,이 issue.getMemberId().getName()

이되지 않을 경우,

DefaultTableModel dtm = new DefaultTableModel(data, colName);{ 
    public Class getColumnClass(int c) { 
     switch (c) { 
      case 0: return Boolean.class; 
      default: return String.class; 
     } 
    } 
}; 

더 importantanly 0 "도서"열 아닌가 ... 나 ... 나에게 잘못 보인다 ...

DefaultTableModel dtm = new DefaultTableModel(data, colName);{ 
    public Class getColumnClass(int c) { 
     return c == 5 ? Boolean.class : String.class 
    } 
}; 

여기서 열 5는 "Return"입니까?

4

당신은 당신의 JTable 년대의 셀 에디터를 사용하는 것입니다 필요한 것 세포. 당신은 당신의 열에 DefaultCellEditor를 사용할 수 있고 JTextField를 입력 param으로 취하는 생성자를 사용할 수 있습니다. 테이블의 2 열은 텍스트 필드를해야하는 경우

예를 들어, 당신은 같은 것을 할 수 있습니다

TableColumn col2 = returnTable.getColumnModel().getColumn(1); 
col2.setCellEditor(new DefaultCellEditor(new JTextField())); 

을 자세한 설명 See Oracle's tutorial for Table cell Editors

희망이 도움이 들어. 당신이 예를 들어 코드에서