Search code examples
javaswingjtablejcheckboxdefaulttablemodel

how to set jcheckbox inside jtable dynamically


In this picture the return table head values show in the checkbox .

here jtable the values from database

I tried it but classcastexception occured because of boolean value cast to string

i don't know why that error occured

enter image description here

this is my code

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

here exception occured

 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;

if u know about this please share answers here...

edit

      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;

Solution

  • From you example and code, this looks wrong to me...

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

    Isn't column 0 "Book" ... or more importantanly, issue.getMemberId().getName()

    Shouldn't it be...

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

    Where column 5 is "Return"?