2014-02-17 4 views
0

На этом изображении значения столбца таблицы возврата отображаются в флажке.Как установить jcheckbox внутри jtable динамически

здесь JTable значения из базы данных

Я попробовал это, но ClassCastException произошло из-за логическое значение отбрасываемой нанизывать

я не знаю, почему эта ошибка

enter image description here

это мой код

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++; 
} 

здесь исключение произошло

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. Пожалуйста, посмотрите класс 'ColorRenderer' в http://docs.oracle.com/javase/tutorial/uiswing/components/table.html –

+0

Что возвращает' issue.getStatus() '? 'String' или' boolean'? – MadProgrammer

ответ

5

От вас пример и код, это выглядит не так со мной ...

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

Не колонка 0 "Книга" ... или более importantanly, issue.getMemberId().getName()

Не должно быть ...

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

Где колонка 5 «Возврат»?

4

Что вам нужно будет использовать редактор ячейки для JTable годов клетка. Вы можете использовать DefaultCellEditor для своего столбца и использовать конструктор, который принимает JTextField в качестве входного параметра.

, например, если второй столбец таблицы вашей должно быть текстовое поле, то вы можете сделать что-то вроде этого:

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

Для детального объяснения See Oracle's tutorial for Table cell Editors

Надежда это помогает.

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