Java 从SQLite检索数据时如何在jTable中创建jCheckbox

Java 从SQLite检索数据时如何在jTable中创建jCheckbox,java,sqlite,netbeans,jtable,jcheckbox,Java,Sqlite,Netbeans,Jtable,Jcheckbox,我正在使用netbeans并将其与SQLite数据库连接,下面您将找到我用于从数据库填充jtable的代码,问题是status列((第三列))将布尔值显示为1和0,如何将其设置为jtable中的jcheckboxs private void Update_table() { try { String sql = "select Name,location,Status from Items where E_ID =" + Integer

我正在使用netbeans并将其与SQLite数据库连接,下面您将找到我用于从数据库填充jtable的代码,问题是status列((第三列))将布尔值显示为1和0,如何将其设置为jtable中的jcheckboxs

private void Update_table() {

    try {
        String sql = "select Name,location,Status from Items where E_ID =" + 
                Integer.parseInt(E_I.getText());

        pst = conn.prepareStatement(sql);
        rs = pst.executeQuery();
        jtable1.setModel(DbUtils.resultSetToTableModel(rs));

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}
现在我用这个,但是支票箱从来没有被检查过!!行的颜色改变,复选框出现在我想要的列中,但问题是如果为真,如何使其选中

    public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {

      CheckBoxRenderer() {
        setHorizontalAlignment(JLabel.CENTER);
      }

      public Component getTableCellRendererComponent(JTable table, Object value,
          boolean isSelected, boolean hasFocus, int row, int column) {
        if (isSelected) {

          setSelected(true);

        } else {

          setSelected(false);
        }

        return this;
      }
      }  








   public class MyCellRenderer extends javax.swing.table.DefaultTableCellRenderer {

    public java.awt.Component getTableCellRendererComponent(javax.swing.JTable table, java.lang.Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        final java.awt.Component cellComponent =    super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);

        Object val = table.getValueAt(row, 2);
        String sval = val.toString();

        int ival = Integer.parseInt(sval);
        if (ival == 0) {
            cellComponent.setForeground(Color.black);
            cellComponent.setBackground(Color.magenta);

        } else {
            cellComponent.setBackground(Color.white);
            cellComponent.setForeground(Color.black);
        }
        if (isSelected) {
            cellComponent.setForeground(table.getSelectionForeground());
            cellComponent.setBackground(table.getSelectionBackground());
        }
       CheckBoxRenderer checkBoxRenderer = new CheckBoxRenderer();
       Itabel.getColumnModel().getColumn(2).setCellRenderer(checkBoxRenderer);
        return cellComponent;

        }

         }

通过组合使用
JTable
中的查找、键入给定的
类型和
表格渲染器
来实现渲染

JTable
将向
TableModel
询问
columnClass
,并将查找用于该给定类型的
TableCellRenderer

默认情况下,当
TableModel#getColumnClass
方法返回
Boolean.class
时,
JTable
将使用
JCheckBox
呈现给定值


看一看两个例子

作为旁注,使用准备好的语句来构建查询,以避免查找“默认单元格渲染器”——我认为这是您需要的。我脑子里想的细节不够多,无法给你写一个好的答案。但是如果我以后有时间,而没有其他人回答,我会尽力帮助你。