package com.vci.client.ui.table; import java.awt.Color; import java.util.HashMap; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JViewport; import javax.swing.ScrollPaneConstants; /** *
Title: 带左侧选择列的表
*Description: 创建带有左侧选择列的表格
* 通过如下的方式生产需要的表格 * ChoiceColumnTable cTableModel = new ChoiceColumnTable(tableModel); * JScrollPane jsp = cTableModel.createChoiceColumnTable(); *Copyright: Copyright (c) 2011
*Company: VCI
* @author Administrator * @time 2011-7-24 * @version 1.0 */ public class ChoiceColumnTable extends JTable { /** * */ private static final long serialVersionUID = -621380959604120104L; private VCIBaseTableModel tableModel = null; private JTable propertyTable = null; private JTable headerColumn = null; private TableSorterData sorter = null; public ChoiceColumnTable(VCIBaseTableModel tableModel) { this.tableModel = tableModel; } /** * *Description: 根据表的模型,创建带有左侧选择列的表,并将表填入到Scrollpane中进行返回。
* * @author Administrator * @time 2011-7-24 * @return */ public JScrollPane createChoiceColumnTable() { FirstColumnTableModel firstColumnTM = new FirstColumnTableModel(0); headerColumn = new JTable(this.tableModel, firstColumnTM); headerColumn.setRowHeight(25); headerColumn.getTableHeader().setReorderingAllowed(false); headerColumn.createDefaultColumnsFromModel(); headerColumn.setBackground(Color.LIGHT_GRAY); headerColumn.setColumnSelectionAllowed(false); headerColumn.setCellSelectionEnabled(false); NonFirstColumnTableModel nonFirstColumnTM = new NonFirstColumnTableModel(100); propertyTable = new JTable(this.tableModel, nonFirstColumnTM); propertyTable.getTableHeader().setReorderingAllowed(false); propertyTable.setRowHeight(25); propertyTable.createDefaultColumnsFromModel(); propertyTable.setSelectionModel(headerColumn.getSelectionModel()); headerColumn.setDefaultRenderer(headerColumn.getColumnClass(0),new TableRowHeaderRenderer(propertyTable)); propertyTable.setModel(this.tableModel); propertyTable.setColumnSelectionAllowed(true); propertyTable.setCellSelectionEnabled(true); propertyTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); sorter = new TableSorterData(this.tableModel); propertyTable.setModel(sorter); sorter.setTableHeader(propertyTable.getTableHeader()); JViewport jv = new JViewport(); jv.setView(headerColumn); jv.setPreferredSize(headerColumn.getMaximumSize()); JScrollPane jsp = new JScrollPane(propertyTable); jsp.setBackground(Color.WHITE); jsp.setRowHeader(jv); jsp.setCorner(ScrollPaneConstants.UPPER_LEFT_CORNER, headerColumn.getTableHeader()); jsp.setAutoscrolls(false); return jsp; } /** * *Description: 根据表的模型,创建带有左侧选择列的表,并将表填入到Scrollpane中进行返回。
* @param alignType 数据表格单元格的默认对齐方式 * @author Administrator * @time 2011-7-24 * @return */ public JScrollPane createChoiceColumnTable(int alignType) { JScrollPane jsp = this.createChoiceColumnTable(); this.setCellAlignType(alignType); return jsp; } /** * *Description: 根据表的模型,创建带有左侧选择列的表,并将表填入到Scrollpane中进行返回。
* @param defaultAlignType 数据表格单元格的默认对齐方式 * @specialAlignType 特别列的对齐方式 * @author Administrator * @time 2011-7-24 * @return */ public JScrollPane createChoiceColumnTable(int defaultAlignType, HashMape.g: DefaultTableCellRenderer.CENTER
*/ public void setCellAlignType(int alignType){ this.setCellAlignType(alignType, new HashMap