栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在使用rs2xml填充的Jtable中添加复选框

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在使用rs2xml填充的Jtable中添加复选框

我假设您是要添加数据库中未包含的其他列的复选框,以便可以选择行?

如果是这样,则可以使用包装器TableModel。

以下示例可能会有所帮助:

import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.table.*;public class CheckBoxWrapperTableModel extends AbstractTableModel{    private ArrayList<Boolean> checkBoxes = new ArrayList<>();    private DefaultTableModel model;    private String columnName;    public CheckBoxWrapperTableModel(DefaultTableModel model, String columnName)    {        this.model = model;        this.columnName = columnName;        for (int i = 0; i < model.getRowCount(); i++) checkBoxes.add( Boolean.FALSE );    }    @Override    public String getColumnName(int column)    {        return (column > 0) ? model.getColumnName(column - 1) : columnName;    }    @Override    public int getRowCount()    {        return model.getRowCount();    }    @Override    public int getColumnCount()    {        return model.getColumnCount() + 1;    }    @Override    public Object getValueAt(int row, int column)    {        if (column > 0) return model.getValueAt(row, column - 1);        else        { Object value = checkBoxes.get(row); return (value == null) ? Boolean.FALSE : value;        }    }    @Override    public boolean isCellEditable(int row, int column)    {        if (column > 0) return model.isCellEditable(row, column - 1);        else return true;    }    @Override    public void setValueAt(Object value, int row, int column)    {        if (column > 0) model.setValueAt(value, row, column - 1);        else        { checkBoxes.set(row, (Boolean)value);        }        fireTableCellUpdated(row, column);    }    @Override    public Class getColumnClass(int column)    {        return (column > 0) ? model.getColumnClass(column - 1) : Boolean.class;    }    public void removeRow(int row)    {        checkBoxes.remove(row);        fireTableRowsDeleted(row, row);        model.removeRow(row);    }    private static void createAndShowGUI()    {        //  Create the table with check marks in the first column        DefaultTableModel model = new DefaultTableModel(5, 1);        for (int i = 0; i < model.getRowCount(); i++)        { model.setValueAt("" + i, i, 0);        }        CheckBoxWrapperTableModel wrapperModel = new CheckBoxWrapperTableModel(model, "Select");        JTable table = new JTable(wrapperModel);        //  Add button to delete selected rows        JButton button = new JButton( "Delete Selected Rows" );        button.addActionListener( new ActionListener()        { @Override public void actionPerformed(ActionEvent e) {     for (int i = table.getRowCount() - 1; i >= 0; i--)     {         Boolean selected = (Boolean)table.getValueAt(i, 0);         System.out.println(selected + " : " + i);         if (selected)         {  wrapperModel.removeRow(i);         }     } }        });        Jframe frame = new Jframe("SSCCE");        frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);        frame.add( new JScrollPane( table ) );        frame.add( button, BorderLayout.PAGE_END );        frame.pack();        frame.setLocationByPlatform( true );        frame.setVisible( true );    }    public static void main(String[] args)    {        EventQueue.invokeLater( () -> createAndShowGUI() );    }}

如果该模型有效,那么您可以使用以下代码为我们提供模型:

//table.setModel(DbUtils.resultSetToTableModel(result));TableModel utilsModel = DbUtils.resultSetToTableModel(result);TableModel wrapperModel = new CheckBoxWrapperTableModel(utilsModel, "Select");table.setModel( wrapperModel );


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469917.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号