2012-03-03 92 views
2

我目前有一個由7列和許多行數據組成的JTable。JTable中列中的顏色單元格

我該如何去關於第7列中每個單元的顏色?我想根據單元格內的數據進行着色。

因此,如果在第7列的單元格之一是說低於0,那麼我想紅色或如果在第7列的單元格之一大於0,則顏色綠等

謝謝您

+0

@deporter Ehhh ..(聳了聳肩)我只是移動到下一個問題。 – 2012-03-03 22:30:30

+0

@AndrewThompson你是對的。 – Juvanis 2012-03-03 22:32:23

+0

對不起,我剛剛學會了如何並將從現在開始。 – 2012-03-10 21:13:23

回答

4

您可以使用TableCellRenderer爲表中的單個單元格創建這些自定義樣式。這tutorial詳細解釋。在該頁面上是一個使用顏色渲染器的示例,該渲染器可能是您需要的開始。

2

覆蓋,當你初始化表對象prepareRenderer()方法,把你的具體條件語句相應地改變顏色,那麼顏色的變化將在你的應用程序,你定義的反映。假設你有一個全球性的JTable變量table,讓model是你的DefaultTableModel實例:

table = new JTable(model) 
{ 
    public Component prepareRenderer (TableCellRenderer r, int row, int col) 
    { 
     Component comp = super.prepareRenderer(r, row, col); 
     if (col == 6 && !isCellSelected(row, col)) 
     { 
      if (table.getValueAt(row, col) < 0) 
       comp.setBackground(Color.RED); 
      else 
       comp.setBackground(Color.GREEN); 
     } 
     return comp; 
    } 
}; 

上面的代碼檢查col == 6,因爲你要上色7列,其對應列索引6(從0開始) 。在內部if語句中,它正在檢查單元值並相應地更改單元格背景顏色。

+2

雖然可行,但我不會推薦它在這個需要對特定列進行視覺修飾的用例中:這是自定義渲染器設計用來處理的「輕量級」任務。另一方面,表格覆蓋是一個「重量級」措施:請記住 - 作爲一般規則,JSomething根本不應擴展以滿足應用程序需要,它們被設計爲可以使用。 – kleopatra 2012-03-04 11:20:01

+0

@kleopatra感謝您的建設性意見。我會嘗試將這個評論用於即將發佈的問題。 – Juvanis 2012-03-04 13:15:22