JTable中 表头中添加 JCheckBox 全选 反向选择 功能
来源:互联网 发布:平安数据分析岗位职责 编辑:程序博客网 时间:2024/06/10 18:55
废话不多说,先上一张效果图
具体源码:
CheckHeaderCellRenderer类
public class CheckHeaderCellRenderer implements TableCellRenderer {
CheckTableModle tableModel;
JTableHeader tableHeader;
final JCheckBox selectBox;
public CheckHeaderCellRenderer(JTable table) {
this.tableModel = (CheckTableModle)table.getModel();
this.tableHeader = table.getTableHeader();
selectBox = new JCheckBox(tableModel.getColumnName(0));
selectBox.setSelected(false);
tableHeader.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() > 0) {
//获得选中列
int selectColumn = tableHeader.columnAtPoint(e.getPoint());
if (selectColumn == 0) {
boolean value = !selectBox.isSelected();
selectBox.setSelected(value);
tableModel.selectAllOrNull(value);
tableHeader.repaint();
}
}
}
});
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
// TODO Auto-generated method stub
String valueStr = (String) value;
JLabel label = new JLabel(valueStr);
label.setHorizontalAlignment(SwingConstants.CENTER); // 表头标签剧中
selectBox.setHorizontalAlignment(SwingConstants.CENTER);// 表头标签剧中
selectBox.setBorderPainted(true);
JComponent component = (column == 0) ? selectBox : label;
component.setForeground(tableHeader.getForeground());
component.setBackground(tableHeader.getBackground());
component.setFont(tableHeader.getFont());
component.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return component;
}
}
CheckTableModle类
public CheckTableModle(Vector data, Vector columnNames) {
super(data, columnNames);
}
// /**
// * 根据类型返回显示空间
// * 布尔类型返回显示checkbox
// */
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public void selectAllOrNull(boolean value) {
for (int i = 0; i < getRowCount(); i++) {
this.setValueAt(value, i, 0);
}
}
}
测试类:TestFrame
private JPanel contentPane;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
TestFrame frame = new TestFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public TestFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("CheckBox Table");
this.setPreferredSize(new Dimension(400, 300));
// setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
table = new JTable();
JScrollPane scrollPane = new JScrollPane(table,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
contentPane.add(scrollPane, BorderLayout.CENTER);
initTable();
pack();
}
private void initTable(){
Vector headerNames=new Vector();
headerNames.add("列选择");
headerNames.add("姓名");
headerNames.add("年龄");
Vector data=this.getData();
CheckTableModle tableModel=new CheckTableModle(data,headerNames);
table.setModel(tableModel);
table.getTableHeader().setDefaultRenderer(new CheckHeaderCellRenderer(table));
}
/**
* 获得数据
* @return
*/
private Vector getData(){
Vector data = new Vector();
Vector rowVector1=new Vector();
rowVector1.add(false);
rowVector1.add("Benson");
rowVector1.add("25");
Vector rowVector2=new Vector();
rowVector2.add(false);
rowVector2.add("Laura");
rowVector2.add("26");
Vector rowVector3=new Vector();
rowVector3.add(false);
rowVector3.add("YOYO");
rowVector3.add("1");
data.add(rowVector1);
data.add(rowVector2);
data.add(rowVector3);
return data;
}
}
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能 CheckHeaderCellRenderer类
- JTable中 表头中添加 JCheckBox 全选 功能
- jtable表头及表格中添加jcheckBox
- JTable的列中添加JCheckBox组件
- JTable中加入JCheckBox
- JTable中添加JCheckBox(附完整测试程序)
- gridview中添加选择框事先全选功能
- JTable中怎样显示表头
- JTable中添加日历
- Jtable表头的第一列为JCheckBox的绘制方法
- 为JTable添加按列选择功能
- [Java] JTable 表头加checkbox全选
- JAVA-SWT如何在Jtable单元格中加入复选框Jcheckbox,Jbutton,JcomboBox
- Java Swing 在 JTable 中给 JCheckbox 绑定事件的方法
- jtable全选与取消选择
- 在dataGridView中添加复选款实现全选的功能
- 音乐播放
- 《AIX 5L系统管理技术》第一章——第四章 笔记
- SubEclipse入门学习指南
- 排序算法 Sleep Sort
- 备忘录:java,servlet生成条形码
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能
- java中判断字符串是否为数字的三种方法
- iOS open source:SBTableAlert(具有UITableView的UIAlertView)
- 欧几里德算法及其扩展算法
- GUI界的大战: QT VS GTK
- 单模式字符串匹配算法---Tuned Boyer-Moore algorithm实现
- xcode快捷键大全
- GCC 中const_iterator编译错误
- 给vc6安装sp6补丁直接返回失败