2011-11-21 85 views
1

我有一個由我自己編寫的呈現器的JTable。當我將JTable設置爲禁用時,我希望它被塗成灰色,並且不能使用當前的Renderer。這就是爲什麼我想在我禁用JTable時刪除渲染器,然後在啓用時再次設置它。從JTable中刪除呈現器

這是可能的,或者我可以採取不同的解決方案?

回答

2

您可以設置一個新的DefaultTableRenderer()。它也應該可以在你的渲染器中使用。或者,您可以擴展DefaultTableRenderer。

+0

我當然可以。我自己應該想到這一點。對不起,它是星期一...... :) –

+0

請確切:類名是「DefaultTableCellRenderer」。無論如何,這沒有幫助 - 默認實現不尊重表的啓用狀態 – kleopatra

3

在設置自定義渲染器之前,從JTable獲取默認渲染器。將其存儲在參考中供以後使用。現在將您的自定義渲染器設置爲JTable。

在禁用表格之前,請設置默認值,並在啓用時設置自定義值。

我希望這應該適合你。

+0

正如我在其他不正確(與DefaultTableCellRenderer相關的部分)的註釋中已經提到的那樣,默認實現不考慮表的啓用狀態 – kleopatra

2

使用JXTable(從SwingX project) - 其渲染尊重表啓用自動

編輯

再次閱讀:

我有一個JTable由我自己寫的渲染器。當我設置了 JTable的殘疾人,我希望它在灰色的畫,並與當前 渲染這是不可能的

爲什麼不是這可能嗎?在您的自定義渲染只需查詢該表的啓用和配置它的狀態。因此

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

如果返回渲染器組件時啓用表您可以檢查。然後你可以在渲染器中設置一個狀態變量,當它被禁用時,它會以不同的方式渲染這個單元格。這種方法也可以允許其他狀態 - 我有一個渲染器,允許根據特定列中的值使用不同的「配置文件」。