编程语言
首页 > 编程语言> > java – 如何在使用rs2xml填充的Jtable中添加复选框

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