2011-04-26 78 views
2

我在我的GUI應用程序中使用JTable作爲網格來表示遊戲的位置。我希望表格中代表對象特定位置的單元格具有某種顏色,並且在某些動作中需要移動的對象(即顏色單元在網格/ JTable中移動)。我知道我可以通過擴展DefaultTableCellRenderer來改變單元格的顏色,這是它可以完成的唯一方法嗎?或者是否有更簡單的方法來修改單元格顏色?另外JXTable比JTable更適合這樣的應用程序嗎?JTable使用TableCellRenderer更改單元格顏色

編輯:我並沒有包括的事實,我需要某些單元格的顏色與按鈕點擊,鍵盤敲擊聲...等動態變化,即是,仍然有可能在任何情況下TableCellRenderer我仍在使用JTable?

感謝,

+1

preparedRenderer可以做到這一點 – mKorbel 2011-04-26 20:51:34

回答

3

隨着JTable中,DefaultTableCellRenderer是做到這一點的最好辦法。

但是,如果您使用JXTable,使用熒光筆和自定義謂詞會更容易。通常,Predicates用於根據單元格的內容進行着色,但您可以根據行/列和某個外部值輕鬆進行着色。

在Rendering and Highlighting下查找http://www.jarvana.com/jarvana/view/org/swinglabs/swingx-core/1.6.2/swingx-core-1.6.2-javadoc.jar!/org/jdesktop/swingx/JXTable.html,這是一個條紋表和模式匹配。你基本上和模式熒光筆做同樣的事情,但是用你自己的謂詞。

+0

儘管如何動態做到這一點?如果我需要單擊更改單元格顏色的按鈕,或者使鍵盤單擊更改單元格顏色,它是否也以相同的方式工作?謝謝 – 2011-05-02 02:20:36

4

作爲替代方案,請考慮使用prepareRenderer(),如@mKorbel所示,並在文章Table Row Rendering中顯示。

+0

我可以在按鈕操作上使用prepareRenderer()來更改一個單元格或一組單元格的顏色嗎? – 2011-05-02 02:11:16

+0

是的,如果狀態是行和列的純函數。另見[這個答案](http://stackoverflow.com/questions/5798980/jtable-disable-checkbox-in-cell/5799016#5799016)。 – trashgod 2011-05-02 02:20:24