java – 如何在使用rs2xml填充的Jtable中添加复选框
作者:互联网
我不知道如何去做我有这个框架我希望填充一个JTable并添加一个复选框.
public static void update_table() {
try {
String sql="SELECT * FROM equipments";
PreparedStatement update = con.prepareStatement(sql);
ResultSet result = update.executeQuery();
table.setModel(DbUtils.resultSetToTableModel(result));
table.setVisible(true);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
解决方法:
我假设您想要添加一个在包含复选框的数据库中找不到的其他列,以便您可以选择行?
如果是这样,那么您可以使用包装器TableModel.
这是一个未经测试的示例,可能会有所帮助:
public class CheckBoxWrapperTableModel extends AbstractTableModel
{
private Map<Integer, Boolean> checkBoxes = new HashMap<Integer, Boolean>();
private TableModel model;
private String columnName;
public CheckBoxWrapperTableModel(TableModel model, String columnName)
{
this.model = model;
this.columnName = columnName;
}
@Override
public String getColumnName(int col)
{
return (column > 0) ? model.getColumnName(col - 1) : columnName;
}
@Override
public int getRowCount()
{
return model.getRowCount();
}
@Override
public int getColumnCount()
{
return model.getColumnCount() + 1;
}
@Override
public Object getValueAt(int row, int col)
{
if (col > 0)
return model.getValueAt(row, col - 1);
else
{
Object value = checkBoxes.get(row);
return (value == null) ? Boolean.FALSE : value;
}
}
@Override
public boolean isCellEditable(int row, int col)
{
if (col > 0)
return model.isCellEditable(row, col - 1);
else
return true;
}
@Override
public void setValueAt(Object value, int row, int col)
{
if (col > 0)
model.setValue(value, row, col - 1);
else
checkBoxes.put(row, value);
fireTableCellUpdated(row, col);
}
@Override
public Class getColumnClass(int col)
{
return (col > 0) ? model.getColumnClass(col - 1) : Boolean.class;
}
}
如果模型有效,那么您将使用以下代码的模型:
//table.setModel(DbUtils.resultSetToTableModel(result));
TableModel utilsModel = DbUtils.resultSetToTableModel(result);
TableModel wrapperModel = new CheckBoxWrapperTableModel(utilsModel, "Select");
table.setModel( wrapperModel );
标签:tablemodel,java,jdbc,swing,jtable 来源: https://codeday.me/bug/20191003/1848015.html