Java 从SQLite检索数据时如何在jTable中创建jCheckbox
我正在使用netbeans并将其与SQLite数据库连接,下面您将找到我用于从数据库填充jtable的代码,问题是status列((第三列))将布尔值显示为1和0,如何将其设置为jtable中的jcheckboxsJava 从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
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
呈现给定值
看一看两个例子作为旁注,使用准备好的语句来构建查询,以避免查找“默认单元格渲染器”——我认为这是您需要的。我脑子里想的细节不够多,无法给你写一个好的答案。但是如果我以后有时间,而没有其他人回答,我会尽力帮助你。