读书人

Table中的JCheckBox TableHeader的全

发布时间: 2013-09-05 16:02:07 作者: rapoo

Table中的JCheckBox TableHeader的全选(全反选)功能

菜鸟学习ing

class CheckDefaultModel extends DefaultTableModel

/* * To change this template, choose Tools | Templates * and open the template in the editor. */package Test2;import javax.swing.table.DefaultTableModel;/** * * @author Administrator */public class CheckDefaultModel extends DefaultTableModel {    Object[] columns;    Object[][] data ;    public CheckDefaultModel(Object[][] data, Object[] columnNames) {        super(data, columnNames);    }    public Class<?> getColumnClass(int columnIndex) {        return getValueAt(0, columnIndex).getClass();    }    public void setAllSelected(boolean value) {        for (int i = 0; i < getRowCount(); i++) {            this.setValueAt(value, i, 0);        }    }}


class TableHeaderRender implements TableCellRenderer

/* * To change this template, choose Tools | Templates * and open the template in the editor. */package Test2;import java.awt.Component;import java.awt.Point;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JCheckBox;import javax.swing.JComponent;import javax.swing.JLabel;import javax.swing.JTable;import javax.swing.table.JTableHeader;import javax.swing.table.TableCellRenderer;/** * * @author Administrator */public class TableHeaderRender implements TableCellRenderer {    JTable table;    JTableHeader tableHeader;    CheckDefaultModel model;    JCheckBox headerBox;    public TableHeaderRender(JTable table) {        this.table = table;        this.tableHeader = table.getTableHeader();        this.model = (CheckDefaultModel) table.getModel();        headerBox = new JCheckBox(model.getColumnName(0));        headerBox.setSelected(false);        tableHeader.addMouseListener(new MouseAdapter() {            @Override            public void mouseClicked(MouseEvent e) {                int selectColumn = tableHeader.columnAtPoint(e.getPoint());                if (selectColumn == 0) {                    boolean value = !headerBox.isSelected();                    headerBox.setSelected(value);                    model.setAllSelected(value);                    tableHeader.repaint();                }            }        });    }    @Override    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {        String valueStr = (String) value;        JLabel label = new JLabel(valueStr);        JComponent component = (column == 0) ? headerBox : label;        return component;    }}


class TableTester extends JFrame

/* * To change this template, choose Tools | Templates * and open the template in the editor. */package Test2;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.DefaultCellEditor;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.border.EmptyBorder;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableColumn;/** * * @author Administrator */public class TableTester extends JFrame {    JPanel contentPanel = new JPanel();    JTable table = new JTable();    Object[] columns = {"choose"};    Object[][] data = {{new Boolean(true)}, {new Boolean(false)}, {new Boolean(false)}};    public TableTester() {        setTitle("CheckBox Table2");        setPreferredSize(new Dimension(300, 200));        setLocationRelativeTo(this);        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        pack();        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));        contentPanel.setLayout(new BorderLayout());        add(contentPanel, BorderLayout.NORTH);        JScrollPane scrollPane = new JScrollPane(table);        scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);        contentPanel.add(scrollPane, BorderLayout.NORTH);        initTable();    }    public void initTable() {                table.setModel(new CheckDefaultModel(data, columns));        table.getTableHeader().setDefaultRenderer(new TableHeaderRender(table));    }    public static void main(String[] args) {        new TableTester().setVisible(true);    }}


读书人网 >编程

热点推荐