微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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 );

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐