JavaSwing:不同的TableCellRenders

JavaSwing:不同的TableCellRenders,java,swing,Java,Swing,给定javax.swing.table.TableColumn。。。是否可以以某种方式指定用于给定类型的TableCellRenderer/TableCellEditor,而不是让TableColumn使用相同的TableCellRenderer/TableCellEditor 我知道我可以在JTable中指定一些DefaultCellEditor/Renderer,但这不是我想要的 由于遗留代码的细节,我无法覆盖JTablegetCellEditorint,int和jtableGetCellR

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

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

由于遗留代码的细节,我无法覆盖JTablegetCellEditorint,int和jtableGetCellRenderInt,int


非常感谢您的建议…

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

public void setDefaultEditor(java.lang.Class<?> columnClass,
                             javax.swing.table.TableCellEditor editor)

public void setDefaultRenderer(java.lang.Class<?> columnClass,
                               javax.swing.table.TableCellRenderer renderer)
或者照卡尔说的做。您的单个编辑器渲染器将查看它返回的值,并委托给其他一些渲染器/编辑器。

请注意,setDefaultRenderer和setDefaultEditor都指定了一个特定的类,它们应该被调用。使用自定义
渲染器和编辑器,如建议的那样。数据模型应该返回给定列的自定义类型,但是渲染器和编辑器可以根据内容或行任意解释此类值。在本例中,值被建模为布尔值和双精度值。相应的视图使用一个复选框和一个格式化的十进制字符串,而Value的compareTo方法确保数字排序。

这将为整个表上的类型设置默认编辑器/呈现器。我认为我们的目标是为一个栏目或一组栏目设置它们。非常感谢您的建议!这解决了我的问题!我现在正在实现TableCellRenderer接口并检查类型,然后转发到所需的CellRenderer。