我创建了ColumnAutofitTable扩展JTable,并参考了http://tips4java.wordpress.com/2008/11/10/table-column-adjuster/
然而,它有时表现出奇怪的行为,如附图所示。

通过编写一些日志,我发现当列宽被错误地展开时,TableModel中的值和CellRenderer中的值是不同的,这在正常情况下是相同的。
正常情况下,TableModel值与CellRenderer文本相同。
行== 0,列== 1,旧宽度== 0,新宽度== 78,值== 00d 01:52:07,渲染器== -74,-15,0x0,无效,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.EmptyBorder@1dd085d,flags=25165832,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalAlignment=LEADING,en19#,00d 01:52:07,,
奇怪的情况,有错误的CellRenderer文本值
行== 465,列== 1,旧宽度== 78,新宽度== 333,值== 00d 00:20:23,渲染器== ==无效,alignmentX=0.0,alignmentY=0.0,== flags=25165832,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,defaultIcon=,defaultIcon=,en23 19#,,en21#卡车司机:null,,
我没有向表中添加任何自定义的单元格呈现器。我使用setDataVector()将数据添加到表中,以防止对每一行进行调整大小。
我的主要问题是:
1)为什么会发生这种情况?它是JTable或CellRenderer的bug吗?
2)在不修改核心java模块的情况下,如何避免这种情况?
发布于 2013-01-28 02:30:57
呈现器是一个共享资源,很可能您正在看到呈现器使用的最后一个值/单元格,它可能不是要报告的单元格。
https://stackoverflow.com/questions/14554540
复制相似问题