JTable设置多行表头 BasicTableHeaderUI 绘制
2015-04-03 20:40
501 查看
package com.yao.table; import javax.swing.*; import javax.swing.plaf.basic.BasicTableHeaderUI; import javax.swing.table.JTableHeader; import java.awt.*;/************************************************************ * * * @author 邓洪书 * */ public class StoreTable extends JTable { public StoreTable() { super(0, 13); this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); this.getTableHeader().setUI(new UI()); } // 表头绘制器********************************************************************* private class UI extends BasicTableHeaderUI { private JTableHeader header; public void paint(Graphics g, JComponent c) { header = (JTableHeader) c; getTableHeader().setPreferredSize(new Dimension(StoreTable.this.getWidth(),85));// 设置表头大小。横坐标必须足够大, //否则会出现绘制不完全以及闪烁现象 //分类 JLabel label=getLabel("分类"); rendererPane.paintComponent(g, label, header, 0, 0, getWidth(0), 45, true); //到货日期 label=getLabel("到货日期"); rendererPane.paintComponent(g, label, header, getX(1), 0, getWidth(1), 45, true); //送货日期 label=getLabel("送货日期"); rendererPane.paintComponent(g, label, header, getX(2), 0, getWidth(2), 45, true); //收款代理 label=getLabel("收款代理"); rendererPane.paintComponent(g, label, header, getX(3), 0, getWidth(3), 45, true); //客户************************************************************************** label=getLabel("客户"); rendererPane.paintComponent(g, label, header, getX(4), 0, getWidth(4)+getWidth(5), 30, true); label=getLabel("上游"); rendererPane.paintComponent(g, label, header, getX(4), 30, getWidth(4), 15, true); label=getLabel("下游"); rendererPane.paintComponent(g, label, header, getX(5), 30, getWidth(5), 15, true); //报关单号********************************************************************** label=getLabel("报关单号"); rendererPane.paintComponent(g, label, header, getX(6), 0, getX(10)-getX(6), 15, true); label=getLabel("上游"); rendererPane.paintComponent(g, label, header, getX(6), 15, getWidth(6)+getWidth(7), 15, true); label=getLabel("下游"); rendererPane.paintComponent(g, label, header, getX(8), 15, getWidth(8)+getWidth(9), 15, true); label=getLabel("进口"); rendererPane.paintComponent(g, label, header, getX(6), 30, getWidth(6), 15, true); label=getLabel("出口"); rendererPane.paintComponent(g, label, header, getX(7), 30, getWidth(7), 15, true); label=getLabel("进口"); rendererPane.paintComponent(g, label, header, getX(8), 30, getWidth(8), 15, true); label=getLabel("出口"); rendererPane.paintComponent(g, label, header, getX(9), 30, getWidth(9), 15, true); //业务员 label=getLabel("业务员"); rendererPane.paintComponent(g, label, header, getX(10), 0, getWidth(10), 45, true); //操作员 label=getLabel("操作员"); rendererPane.paintComponent(g, label, header, getX(11), 0, getWidth(11), 45, true); //审核人 label=getLabel("审核人"); rendererPane.paintComponent(g, label, header, getX(12), 0, getWidth(12), 45, true); } // 得到指定列的起始坐标 private int getX(int column) { int x=0; for(int i=0;i<column;i++) x+=header.getColumnModel().getColumn(i).getWidth(); return x; } //得到指定列的宽度 private int getWidth(int column) { return header.getColumnModel().getColumn(column).getWidth(); } //得到具有指定文本的标签 private JLabel getLabel(String text) { JLabel label = new JLabel(text, JLabel.CENTER); label.setFont(new Font("Dialog", Font.PLAIN, 12)); label.setBorder(UIManager.getBorder("TableHeader.cellBorder")); return label; } } public static void main(String[] args) { JFrame frame=new JFrame(); frame.setSize(800,300); frame.setDefaultCloseOperation(3); frame.getContentPane().add(new JScrollPane(new StoreTable())); frame.setVisible(true); } }
相关文章推荐
- jtable表头提示文本--通过重写表格头TableHeader的渲染器来实现
- 表头合并单元格. JTable Groupable TableHeader
- 使用Masonry动态设置tableview表头---tableHeaderView(解决表头背景色设置不了问题)
- java JTable设置多行表头
- ios开发之--ios11适配:TableView的heightForHeaderInSection设置高度无效/UISearchBar消失
- 使用js隐藏GridView的表头(hide the table header of GridView by JS)
- PHP 使用header函数设置HTTP头的示例解析 表头
- PHP 使用header函数设置HTTP头的示例方法 表头
- TableHeaderView高度设置
- java JTable设置表头多行
- PHP 使用header函数设置HTTP头的示例方法 表头(转)
- PHP 使用header函数设置HTTP头的示例方法 表头 (xlsx下载)
- 【转】PHP 使用header函数设置HTTP头的示例方法 表头
- jtable 表头设置高度后,拖动后文字模糊
- ios:改变tableview的titleForHeaderInSection字体颜色设置
- 关于 JTable 刷新绘制(repaint) 以及JTable各属性设置
- 设置多行的Table高度为100%,并在最后一行中加入iframe
- JTable表头的行高设置
- [JAVA] 设置图标,设置字体,设置界面风格,JTable显示表头且设置不可编辑