多行标题的jTable

方法一(很简单,也很笨的方法,缺点,只能显示多列,但不能显示多行)

效果图:

 

代码:

 

package  com.zami.wms.main.test;

import  java.awt. * ;
import  java.util. * ;

import  javax.swing. * ;
import  javax.swing.table. * ;

public   class  MutilHeadTable  extends  JTable {
    
    
public  MutilHeadTable(TableModel tm) {
        
super (tm);
        init();
    }
    
    
private   void  init(){
// 为每个列添加自定义的RENDER.这个Api设计比较麻烦.
        CustomizedHeaderRender r  =   new  CustomizedHeaderRender();
        
for  ( int  i = 0 ; i <  getModel().getColumnCount(); i ++ ) {
            TableColumn column 
=  getColumnModel().getColumn(i);
            column.setHeaderRenderer(
new  CustomizedHeaderRender());
        }
    }
// 一个自己定义的头部渲染器.可以根据自己的需要来返回不同的组件显示内容.
     private   class  CustomizedHeaderRender  extends  DefaultTableCellRenderer{
        
        
public  Component getTableCellRendererComponent(JTable table,
                Object value,
                
boolean  isSelected,
                
boolean  hasFocus,
                
int  row,
                
int  column) {
            
            
if (value != null   &&  value  instanceof  String){
                StringTokenizer t 
=   new  StringTokenizer((String)value, " / " );
                StringBuffer bf 
=   new  StringBuffer();
                bf.append(
" <html> " );
                
                
while  (t.hasMoreElements()){
                    bf.append(t.nextElement());
                    
if (t.hasMoreElements())
                        bf.append(
" <br/> " );
                    
else
                        bf.append(
" </html> " );
                }
                JLabel jl 
= new  JLabel(bf.toString());
                jl.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
                
return  jl;
            }
            
return   this ;
        }
    }
    
    
public   static   void  main(String[] args) {
        JFrame frame 
=   new  JFrame( " Leaders " );
        Container contentPane 
=  frame.getContentPane();
        String headers[] 
=  { " Line1/line2/line3 " " Country " };
        String data[][] 
=  {
            {
" Tony Blair " " England "
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值