从JTable中删除渲染器

时间:2011-11-21 12:11:13

标签: java swing jtable render

我有一个带有我自己编写的渲染器的JTable。当我设置JTable禁用时,我希望它以灰色绘制,并且使用当前的渲染器是不可能的。这就是为什么我想在禁用JTable时删除渲染器,然后在启用时再次设置它。

这可能,或者我可以采取不同的解决方案吗?

4 个答案:

答案 0 :(得分:3)

在设置自定义渲染器之前,从JTable获取默认渲染器。将其存储在参考中供以后使用。现在将自定义渲染器设置为JTable。

在禁用表格之前,请设置默认表格,当您启用表格时,请设置自定义表格。

我希望这适合你。

答案 1 :(得分:2)

您可以设置新的DefaultTableRenderer()。你的渲染器也应该可以。或者,您可以扩展DefaultTableRenderer。

答案 2 :(得分:2)

使用JXTable(来自SwingX project) - 其渲染器自动尊重表启用

修改

再次阅读:

  

我有一个带有我自己编写的渲染器的JTable。当我设置   JTable禁用,我希望它用灰色绘制,并与当前   渲染器不可能

为什么不可能?在您的自定义渲染器中,只需查询表启用并相应地配置其状态

 public Component getTableCellRendererComponent(...) {
     ...
     myRenderingComponent.setEnabled(table.isEnabled());
     return myRenderingComponent;
} 

答案 3 :(得分:1)

您可以在返回渲染器组件时检查表是否已启用。然后,您可以在渲染器中设置一个状态变量,当禁用它时,它将以不同于启用时为单位呈现单元格。这种方法还可以允许其他状态 - 我有一个渲染器,根据特定列中的值允许不同的“配置文件”。