jtable表头及表格中添加jcheckBox
2015-05-22 14:40
232 查看
表格头渲染器:
package cn.ait.amfp.ui.util;
import java.awt.Component;
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.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
public class RadarCheckHeaderCellRenderer implements TableCellRenderer {
RadarImageTableModel tableModel;
JTableHeader tableHeader;
final JCheckBox selectBox;//复选框
public RadarCheckHeaderCellRenderer(JTable table) {
this.tableModel = (RadarImageTableModel) 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;
}
}
使用渲染器:
Jtabel filenametable = new JTable();
filenametable.setModel(radarImageTableModel);
filenametable.getTableHeader().setDefaultRenderer(new RadarCheckHeaderCellRenderer(filenametable));
表格头渲染器:
package cn.ait.amfp.ui.util;
import java.awt.Component;
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.SwingConstants;
import javax.swing.UIManager;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
public class RadarCheckHeaderCellRenderer implements TableCellRenderer {
RadarImageTableModel tableModel;
JTableHeader tableHeader;
final JCheckBox selectBox;//复选框
public RadarCheckHeaderCellRenderer(JTable table) {
this.tableModel = (RadarImageTableModel) 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;
}
}
使用渲染器:
Jtabel filenametable = new JTable();
filenametable.setModel(radarImageTableModel);
filenametable.getTableHeader().setDefaultRenderer(new RadarCheckHeaderCellRenderer(filenametable));
相关文章推荐
- Swing 之 JTable 使表头标题和表格内容居中
- easyUI datagrid 表格 表头添加菜单,实现可选列。
- 为Word文档长表格每一页自动添加表头
- Java Swing JTable 表格【3:创建表格,表头存在的设置】
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能
- Java Swing JTable 表格【13:为表格的表头指定文字说明】
- JTable表格(隐藏表头)(转)
- 浅谈js中如何动态添加表头/表列/表格内容
- 为表格添加竖直滚动条并固定表头
- 表格添加固定表头,js 实现 tableFixedHead.js
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能
- JTable 表格中添加 JComboBox 控件
- [jtable]添加静态数据到表格组件
- Word中根据表头动态增加表格行,然后往表格里写数据,以及在Word中添加书签,然后替换书签值
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能 CheckHeaderCellRenderer类
- HBuilder MUI 中添加固定列固定表头的表格,单元格根据宽度自适应
- JTable中添加JCheckBox(附完整测试程序)
- 浅谈js中如何动态添加表头/表列/表格内容
- JTable的列中添加JCheckBox组件
- jtable表头提示文本--通过重写表格头TableHeader的渲染器来实现