gpt4 book ai didi

java - 如何从数据库填充 jtable 复选框值?

转载 作者:行者123 更新时间:2023-11-30 08:09:33 25 4
gpt4 key购买 nike

我想在数据库值为 true 或 false 时向 JTable 添加一个复选框(当前我使用的是 Oracle 数据库,因此它不接受 boolean 类型)。

当值为 true 时,复选框将显示为选中/选中。

一切都很好,但 JTable 显示得像 true 和 false。

这是我的代码:

函数

private void loadData(){
try {
con = Connection_Config.ConnectDB();
String sql = "select * from t_module_list";
ps = con.prepareStatement(sql);
rs = ps.executeQuery();

tab.setModel(buildTableModel(rs));
} catch (SQLException ex) {
}
}


public static DefaultTableModel buildTableModel(ResultSet rs) throws SQLException {
ResultSetMetaData metaData = rs.getMetaData();

// names of columns
Vector<String> columnNames = new Vector<String>();
int columnCount = metaData.getColumnCount();
/* for (int column = 1; column <= columnCount; column++) {
columnNames.add(metaData.getColumnName(column));
}*/

columnNames.add("MODULE NAME");
columnNames.add("SUB_MODULE NAME");
columnNames.add("ADD");
columnNames.add("MODIFY");
columnNames.add("DELETE");
columnNames.add("VIEW");

// data of the table
Vector<Vector<Object>> data = new Vector<Vector<Object>>();

while (rs.next()) {
Vector<Object> vector = new Vector<>();
for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
System.out.println("rs.getObject(columnIndex)======="+rs.getObject(columnInde x));
if (rs.getObject(columnIndex).equals("false") ||
rs.getObject(columnIndex).equals("true")) {
vector.add(new Boolean(true));
} else {
vector.add(rs.getObject(columnIndex));
}
}
data.add(vector);
}

return new DefaultTableModel(data, columnNames);
}

最佳答案

首先,您的数据需要是对象而不是字符串,例如

Object[] data = new Object[columnNames.length];

然后从数据库添加您的值

data[0] = new Boolean(rs.getBoolean(0));

然后为相关列设置默认渲染器

table.getColumnModel().getColumn(0).setCellRenderer(
new MyCellRenderer());

这是渲染器

public class MyCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = 1L;

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


if (value instanceof JComboBox) {
return (JComboBox) value;
}
if (value instanceof Boolean) {
JCheckBox cb = new JCheckBox();
cb.setSelected(((Boolean) value).booleanValue());
return cb;
}
if (value instanceof JCheckBox) {
return (JCheckBox) value;
}
return new JTextField(value.toString());
}

}

关于java - 如何从数据库填充 jtable 复选框值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com