CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

各位老大,谁知道如何更改JTable的表格头的高度。

楼主magictxh123(华)2001-09-03 16:23:52 在 Java / J2SE / 基础类 提问

问题点数:20、回复次数:2Top

1 楼rinehart(rinehart)回复于 2001-09-03 16:33:05 得分 20

表格头的绘制和表格的绘制一样,都要通过绘制器去实现!  
  import   javax.swing.*;  
  import   javax.swing.border.*;  
  import   javax.swing.table.*;  
  import   java.awt.*;  
  import   java.awt.event.*;  
  import   java.util.*;  
   
  public   class   Test   extends   JFrame   {  
  String   longTitle   =   "Last   Name   /   Maiden   Name   (if   divorced)";  
  MultilineHeaderRenderer   multilineRenderer   =    
  new   MultilineHeaderRenderer(longTitle);  
   
  JTable   table   =   new   JTable(  
  new   Object[][]   {  
  {   "Lynn",   "M.",   "Seckinger"   },  
  {   "Carol",   "R.",   "Seckinger"   },  
  {   "Roy",   "D.",   "Martin"   },  
  {   "Richard",   "A.",   "Tattersall"   },  
  {   "Philip",   "B.",   "Edwards"   },  
  {   "Moore",   "T.",   "Moore"   },  
   
  //   shorten   scrollbar   grip   with   these   ...  
   
  {   "Lynn",   "M.",   "Seckinger"   },  
  {   "Carol",   "R.",   "Seckinger"   },  
  {   "Roy",   "D.",   "Martin"   },  
  {   "Richard",   "A.",   "Tattersall"   },  
  {   "Philip",   "B.",   "Edwards"   },  
  {   "Moore",   "T.",   "Moore"   },  
  },  
  new   Object[]   {"First   Name",   "MI",   longTitle});  
   
  public   Test()   {  
  TableColumn   middleColumn   =   table.getColumn("MI"),  
  lastColumn   =   table.getColumn(longTitle);  
   
  lastColumn.setHeaderRenderer(multilineRenderer);  
   
  TableCellRenderer   hdrRenderer   =    
  middleColumn.getHeaderRenderer();  
   
  Component   hdrComponent   =    
  hdrRenderer.getTableCellRendererComponent(table,    
  "MI",   false,   false,   0,   0);  
   
  if(hdrComponent   instanceof   JComponent)   {  
  JComponent   c   =   (JComponent)hdrComponent;  
  c.setToolTipText("Middle   Initial");  
  }  
   
  table.getTableHeader().setToolTipText("Table   Header!");  
   
  getContentPane().add(  
            new   JScrollPane(table),   BorderLayout.CENTER);  
  }  
  public   static   void   main(String   args[])   {  
  GJApp.launch(new   Test(),    
  "Multi-Line   Column   Headers",300,300,300,250);  
  }  
  }  
  class   MultilineHeaderRenderer   implements   TableCellRenderer   {  
  MultilineHeader   mll;  
  JScrollPane   scrollPane;  
   
  public   MultilineHeaderRenderer(String   title)   {  
  mll   =   new   MultilineHeader(title);  
  scrollPane   =   new   JScrollPane(mll);  
   
  scrollPane.setHorizontalScrollBarPolicy(  
  JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);  
   
  scrollPane.setVerticalScrollBarPolicy(  
  JScrollPane.VERTICAL_SCROLLBAR_NEVER);  
   
  scrollPane.setBorder(null);  
  }  
  public   Component   getTableCellRendererComponent(JTable   table,    
  Object   value,  
  boolean   isSelected,  
  boolean   hasFocus,  
  int   row,   int   col)   {  
  mll.setText((String)value);  
  return   scrollPane;  
  }  
  }  
  class   MultilineHeader   extends   JTextArea   {  
  public   MultilineHeader(String   s)   {  
  super(s);  
  }  
  public   void   updateUI()   {  
  super.updateUI();  
   
  //   turn   on   wrapping   and   disable   editing   and   highlighting  
   
  setLineWrap(true);  
  setWrapStyleWord(true);  
  setHighlighter(null);  
  setEditable(false);  
   
  //   make   the   text   area   look   like   a   table   header  
   
  LookAndFeel.installColorsAndFont(this,  
  "TableHeader.background",  
  "TableHeader.foreground",  
  "TableHeader.font");  
   
  LookAndFeel.installBorder(this,   "TableHeader.cellBorder");  
  }  
  }  
  class   GJApp   extends   WindowAdapter   {  
  static   private   JPanel   statusArea   =   new   JPanel();  
  static   private   JLabel   status   =   new   JLabel("   ");  
  static   private   ResourceBundle   resources;  
   
  public   static   void   launch(final   JFrame   f,   String   title,  
      final   int   x,   final   int   y,    
      final   int   w,   int   h)   {  
  launch(f,title,x,y,w,h,null);  
  }  
  public   static   void   launch(final   JFrame   f,   String   title,  
      final   int   x,   final   int   y,    
      final   int   w,   int   h,  
      String   propertiesFilename)   {  
  f.setTitle(title);  
  f.setBounds(x,y,w,h);  
  f.setVisible(true);  
   
  statusArea.setBorder(BorderFactory.createEtchedBorder());  
  statusArea.setLayout(new   FlowLayout(FlowLayout.LEFT,0,0));  
  statusArea.add(status);  
  status.setHorizontalAlignment(JLabel.LEFT);  
   
  f.setDefaultCloseOperation(  
  WindowConstants.DISPOSE_ON_CLOSE);  
   
  if(propertiesFilename   !=   null)   {  
  resources   =   ResourceBundle.getBundle(  
  propertiesFilename,   Locale.getDefault());  
  }  
   
  f.addWindowListener(new   WindowAdapter()   {  
  public   void   windowClosed(WindowEvent   e)   {  
  System.exit(0);  
  }  
  });  
  }  
  static   public   JPanel   getStatusArea()   {  
  return   statusArea;  
  }  
  static   public   void   showStatus(String   s)   {  
  status.setText(s);  
  }  
  static   Object   getResource(String   key)   {  
  if(resources   !=   null)   {  
  return   resources.getString(key);  
  }  
  return   null;  
  }  
  }  
  Top

相关问题

  • 如何更改表格中的值?
  • 如何去掉JTable的表格线
  • 如何去掉JTable的表格线
  • [JTable]如何使一个表格全选?
  • 关于MySQL中表格更改的问题
  • 怎样通过点击表格头更改整个表格的排序方式(就像excel)?
  • 求救:如何在表格中鼠标放上时更改表格的背景图?在线等!
  • 各位老大,sql 7.0 如何更改表的owner
  • 各位老大帮帮忙!!!推荐几个好点的表格(栅格)控件?????
  • 请教各位老大,EXCEL表格的控件是怎么做出来的?

关键词

  • 表格
  • swing
  • statusarea
  • scrollpane
  • longtitle
  • multilineheaderrenderer
  • mll
  • multilineheader
  • seckinger
  • jtable

得分解答快速导航

  • 帖主:magictxh123
  • rinehart

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo