知识大全 Swinghacks——JTable根据内容调整列宽

Posted 内容

篇首语:今日长缨在手,何时缚住苍龙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Swinghacks——JTable根据内容调整列宽相关的知识,希望对你有一定的参考价值。

Swinghacks——JTable根据内容调整列宽  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  JTable默认情况下 列宽是固定值 如下

>

  若要根据内容来调整列宽 那首先要知道内容占用多少宽度 代码如下

  [java]

  int maxwidth = ;

  for (int row= ; row<table getRowCount(); row++)

  TableCellRenderer rend = table getCellRenderer (row col);

  Object value = table getValueAt (row col);

  Component p =

  rend getTableCellRendererComponent (table

  value

  false

  false

  row

  col);

  maxwidth = Math max (p getPreferredSize() width

  maxwidth);

  

  这段代码是在计算列内容中的最大值maxwidth 其原理是这样的

   通过数据模型TableModel获取该列某行的值数据

  [java]

  Object value = table getValueAt (row col);

   用渲染方法把值数据转换成显示的组件 就是这个方法getTableCellRendererComponent

  如果不了解MVC模型和JTable的渲染器的话 建议看这篇文章

  getTableCellRendererComponent方法应该是jtable调用来把数据模型的数据渲染成ponent 然后显示在jtable的单元格上 所以我们看到的jtable单元格都是这个方法返回的ponent

   现在主动调用getTableCellRendererComponent方法 获取到要显示的ponent 然后getPerferredSize 再筛选出最大值就行

   最后把筛选出的最大值设置为column的宽度即可

>

  上图已经是根据内容调整列宽了 但是还有一个缺点就是第一列 只考虑到了列内容的宽度 但是没有考虑到表头的内容宽度

  不过思路也是一样的 获取表头的数据模型 和 渲染器 然后主动构造出表头的ponent获取PerferredSize 再判断下列宽值即可

  [java]

  TableCellRenderer headerRenderer = column getHeaderRenderer();

  if (headerRenderer == null)

  headerRenderer = table getTableHeader() getDefaultRenderer();

  Object headerValue = column getHeaderValue();

  Component headerComp =

  headerRenderer getTableCellRendererComponent (table

  headerValue

  false

  false

  

  col);

  maxwidth = Math max (maxwidth

  headerComp getPreferredSize() width);

> cha138/Article/program/Java/ky/201311/28729

相关参考

知识大全 Swinghacks——把提示窗口放到glass中

Swinghacks——把提示窗口放到glass中  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 JTable常见用法细则

JTable常见用法细则  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!JTable是Swing编程

知识大全 JTable 单元格显示Tip

JTable单元格显示Tip  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  importjava

知识大全 Swing之JTable运用线程一个测试

Swing之JTable运用线程一个测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  impo

知识大全 自定义jtable 实现排序 windows式多选习惯

  packagebrowser;  importjavaawtComponent;  importjavaawtDimension;  importjavaawtFont;  importjavaa

构成法律关系的三要素是主体、客体和内容,而法律关系根据其调整内容与社会关系性质不同,可以分为__

构成法律关系的三要素是主体、客体和内容,而法律关系根据其调整内容与社会关系性质不同,可以分为_____。A、刑事法律关系B、经济法律关系C、民事法律关系D、行政法律关系答案:ACD

由于汇率变动,期末根据实际汇率调整形成的未实现汇兑损益,是否进行纳税调整?

根据《条例》第39条规定,期末根据实际汇率调整形成的汇兑损益,除已经计入有关资产成本以及与向所有者进行利润分配相关的部分以外的部分,无论是否实现,均应计入当期应纳税所得额进行纳税调整。

平均投资策略的内容

平均投资策略的内容从现代金融理论的角度来看,如果投资者在制定投资计划后,根据新的信息不断调整计划,这种策略要比平均投资策略要优。而在平均投资策略中,投资者拒绝了新的信息,因而是一种次优的策略。传统理论

期末账项调整的内容包括哪几种类型?

账项调整的内容有五种类型:应计收入的调整;预收收入的调整;应计费用的调整;预付费用的调整;其他账顶的

怎样根据血、尿糖变化调整胰岛素剂量

(1)上午或上午及下午血、尿糖皆高,应首先增加早餐前普通胰岛素量;单纯下午血、尿糖高,应增加午餐前短效胰岛素量;晚餐后及夜间血、尿糖高,应增加晚餐前胰岛素量,一般每次增加2U。  (2)夜间尿糖高,白