繁体   English   中英

如何使用每行的JCheckboxes向JTable添加新列

[英]How to add new column into JTable with JCheckboxes for each rows

我想要一个具有三列的Jtable,其中从数据库中选择两列,第三列的每一行都需要有JcheckBoxes

我有这样的代码

    DefaultTableModel model = new DefaultTableModel();
    model.setColumnIdentifiers(columns);

    table = new JTable();
    table.setModel(model);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    table.setFillsViewportHeight(true);
    JScrollPane scroll = new JScrollPane(table);

    TableColumn tc = table.getColumnModel().getColumn(2);
    tc.setCellEditor(table.getDefaultEditor(Boolean.class));         
   tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));
    frame.getContentPane().add(scroll);

    String col_1 = "";
    Integer col_2 = 0;

 try
  {
   ////DefaultTableModel default_model = new DefaultTableModel();
  ////default_model.setColumnIdentifiers(columns);
  ((DefaultTableModel) model).setColumnIdentifiers(columns);
  Class.forName("com.mysql.jdbc.Driver").newInstance();
  Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/hdb","root","root");

  Statement stmnt = con.createStatement();

  java.sql.ResultSet rs=stmnt.executeQuery("select col_1,col_2 from databaseTable");

        while(rs.next()) 
        {
            act_name = rs.getString("col_1");
            time_in_min = rs.getInt("col_2");
            model.addRow(new Object[]{col_1,col_2,new Boolean(false)});
            //////((DefaultTableModel) model).addRow(new Object[]{col_1,col_2, Boolean.FALSE});

        }

        con.close();

    }catch(Exception e)
    {
        e.printStackTrace();
    }

}

它只是给具有错误值的列而不是复选框

重写以返回正确的列类

class MyTableModel extends DefaultTableModel{

    public Class<?> getColumnClass(int columnIndex) {
        return getValueAt(0, columnIndex).getClass();
    }
}

并将其用作表模型。
这些线

TableColumn tc = table.getColumnModel().getColumn(2);
tc.setCellEditor(table.getDefaultEditor(Boolean.class));         
tc.setCellRenderer(table.getDefaultRenderer(Boolean.class));

不需要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM