您的位置:首页 > 其它

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));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: