java自己绘制多层表头
来源:互联网 发布:网络配音 编辑:程序博客网 时间:2024/05/21 06:49
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.UIManager;
import javax.swing.plaf.basic.BasicTableHeaderUI;
import javax.swing.table.JTableHeader;
import org.jdesktop.swingx.JXTable;
public class MappingTableHeaderUI extends BasicTableHeaderUI {
private JTableHeader header;
private MappingTableModel tableModel;
private JXTable mappingTable;
public MappingTableHeaderUI(JXTable table){
this.tableModel =(MappingTableModel) table.getModel();
mappingTable = table;
mappingTable.getTableHeader().setPreferredSize(new Dimension(10000, 30));
}
public void paint(Graphics g, JComponent c) {
header = (JTableHeader) c;
JLabel label=getLabel("");
for (int i = 0; i< tableModel.getSingleColumnCount(); i++){
String columnName = tableModel.getColumnName(i);
label = getLabel(columnName);
rendererPane.paintComponent(g, label, header, getX(i), 0, getWidth(i), 30, true);
}
for(int j = 0 ;j < tableModel.getGroupColumnCounts(); j++){
String groupcolumnName = tableModel.getGroupColumnName(j);
label = getLabel(groupcolumnName);
int groupwidth = 0;
for(int k = 0 ;k < tableModel.getGroupColumnSubCounts(j) ; k++){
int index = tableModel.changeToTotalColumnIndex(j,k);
String columnName = tableModel.getColumnName(index);
label = getLabel(columnName);
rendererPane.paintComponent(g, label, header, getX(index), 15, getWidth(index), 15, true);
groupwidth +=getWidth(index);
}
int groupindex = tableModel.changeToTotalColumnIndex(j,0);
rendererPane.paintComponent(g, label, header, getX(groupindex), 0, groupwidth, 15, true);
}
}
private int getX(int column){
int x=0;
for(int i=0;i<column;i++){
// if(i < tableModel.getSingleColumnCount()){
// x+=tableModel.getSingleColumnWidth(i);
// }else{
x+=header.getColumnModel().getColumn(i).getWidth();
// }
}
return x;
}
private int getWidth(int column){
// if(column < tableModel.getSingleColumnCount()){
// return tableModel.getSingleColumnWidth(column);
// }
return header.getColumnModel().getColumn(column).getWidth();
}
private JLabel getLabel(String text){
JLabel label = new JLabel(text, JLabel.CENTER);
label.setBorder(UIManager.getBorder("TableHeader.cellBorder"));
return label;
}
}
- java自己绘制多层表头
- datagrid多层表头
- DataGrid多层表头设计
- DataGridView任意多层表头
- Ext多层表头
- list view 多层表头
- GridView多层表头 GridView复杂表头
- 实现DataGridView的多层表头
- python绘制多层饼状图
- ASP.net(C#)导出Excel----普通表头,多层表头。
- asp.net的DataGrid的多层表头
- asp.net datagrid实现多层表头
- (原创)DataGrid多层表头设计
- asp.net的DataGrid的多层表头
- asp.net的DataGrid的多层表头
- Net下的DataGrid的多层表头
- GridView复合多层表头(不限级)!!!
- .datagrid多层表头功能的实现
- Linux修改系统后立即重起可能出现的问题
- ubuntu10.04下编译glib库
- 中国象棋中的跳马问题(学习搜索中)
- Oracle中建立索引并强制优化器使用
- Forefront Identity Manager 2010高效身份管理 (03): Forefront Identity Manager 2010 安装过程概述(下)
- java自己绘制多层表头
- windows+python2.7在IDLE中执行sys.exit()出现的问题及解决方案
- 使用 PIVOT 和 UNPIVOT
- java 网络编程 页面下载源代码
- 淡定人生,享受平静
- Android跨进程通信-AIDL
- cookie思路
- java 中格式化小数位数
- 黑马程序员之基础知识总结2