【问题标题】:Java Swing: Different TableCellRenderersJava Swing:不同的 TableCellRenderer
【发布时间】:2009-12-14 15:20:19
【问题描述】:

给定javax.swing.table.TableColumn... 是否可以通过某种方式指定 TableCellRenderer/TableCellEditor 用于给定类型,而不是让 TableColumn 使用相同的 TableCellRenderer/TableCellEditor?

我知道我可以在 JTable 中指定一些 DefaultCellEditor/Renderer,但这不是我想要的。

由于细节(遗留代码细节),我无法覆盖JTable#getCellEditor(int,int)JTable#getCellRenderer(int,int)

感谢任何建议...

【问题讨论】:

    标签: java swing


    【解决方案1】:

    我对 TableCellRenderer 不够熟悉,无法确定这是合适的,但您能不能指定一个查看内容,然后根据类型分派给其他渲染器的渲染器?

    【讨论】:

    • 非常感谢您的建议!这解决了我的问题!我现在正在实现 TableCellRenderer 接口并检查类型,转发到所需的 CellRenderer。
    【解决方案2】:
    public void setDefaultEditor(java.lang.Class<?> columnClass,
                                 javax.swing.table.TableCellEditor editor)
    
    public void setDefaultRenderer(java.lang.Class<?> columnClass,
                                   javax.swing.table.TableCellRenderer renderer)
    

    或者照卡尔说的做。您的单个编辑器渲染器会查看它返回的值并委托给其他渲染器/编辑器。

    【讨论】:

    • 这些将为整个表上的类型设置默认编辑器/渲染器。我认为目标是仅为一列或一组列设置它们。
    【解决方案3】:

    注意setDefaultRenderer()setDefaultEditor() 各自指定了一个特定的类,它们应该被调用。使用自定义设计复合类型相当容易 渲染器和编辑器,建议 in this example。数据模型应该返回给定列的自定义类型,但渲染器和编辑器可以根据内容或行任意解释这些值。在示例中,Value 被建模为 BooleanDouble。对应的视图使用了一个复选框和一个格式化的十进制字符串,而ValuecompareTo()方法保证了数字排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-23
      • 2012-02-16
      • 2011-11-09
      • 2021-08-24
      • 2013-08-13
      • 2020-05-07
      • 1970-01-01
      • 2013-08-12
      相关资源
      最近更新 更多