0

我创建了 ColumnAutofitTable 扩展 JTable,参考http://tips4java.wordpress.com/2008/11/10/table-column-adjuster/

然而,它有时会显示奇怪的行为,如附图所示。 时间间隔列未正确调整大小

通过写一些日志,我发现当列宽被错误扩展时,TableModel中的值和CellRenderer中的值是不同的,在正常情况下是相同的。

正常情况,TableModel 的 Value 和 CellRenderer 的 text 是一样的。

行 == 0,列 == 1,旧宽度 == 0,新宽度 == 78,值 == 00d 01:52:07,渲染器 == javax.swing.table.DefaultTableCellRenderer$UIResource[Table.cellRenderer,- 74,-15,0x0,无效,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.EmptyBorder@1dd085d,flags=25165832,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizo​​ntalAlignment= LEADING,horizo​​ntalTextPosition=TRAILING,iconTextGap=4,labelFor=,text= 00d 01:52:07,verticalAlignment=CENTER,verticalTextPosition=CENTER]

奇怪的情况,有错误的 CellRenderer 文本值

行 == 465,列 == 1,旧宽度 == 78,新宽度 == 333,值 == 00d 00:20:23,渲染器 == javax.swing.table.DefaultTableCellRenderer$UIResource[Table.cellRenderer,216,336 ,74x15,无效,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.EmptyBorder@1dd085d,flags=25165832,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizo​​ntalAlignment=LEADING,horizo​​ntalTextPosition= TRAILING,iconTextGap=4,labelFor=,text=DRIVER:S120146165 IN_QTY:0 OUT_QTY:1 TRUCKER:null ,verticalAlignment=CENTER,verticalTextPosition=CENTER]

我没有在表格中添加任何自定义的单元格渲染器。我使用 setDataVector() 将数据添加到表中,以防止调整每一行的大小。

我的主要问题是:
1)为什么会出现这种症状?是 JTable 还是 CellRenderer 的 bug?
2)如何在不修改核心java模块的情况下避免这种事情?

4

1 回答 1

2

渲染器是共享资源,您可能看到渲染器使用的最后一个值/单元格,这可能不是您报告的单元格

于 2013-01-28T02:30:57.700 回答