【问题标题】:Value difference between TableModel and CellRendererTableModel 和 CellRenderer 的值差异
【发布时间】:2013-01-11 08:22:42
【问题描述】:

我创建了 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 卡车司机:null ,verticalAlignment=CENTER,verticalTextPosition=CENTER]

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

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

【问题讨论】:

  • 请编辑您的问题以包含一个 sscce 来展示您所描述的问题。

标签: java swing jtable tablecellrenderer


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2017-12-17
    • 2020-10-11
    • 2018-05-10
    相关资源
    最近更新 更多