2012-07-16 76 views
0

我在我的項目中有一個名爲tasktable的表。它從數據庫(oracle)中檢索數據。如何更改單元格中具有顏色的行的顏色。 (我,8)自動當我點擊刷新按鈕?在JTable Java中更改行背景

我已經嘗試了很多次穿上特定的一行源代碼,但它結束了着色所有的表:

  int count;  
      count = tasktable.getRowCount(); 
     for (int i=0;i<count;i++) 
      { 
        rr = new Object(); 
        rr = tasktable.getModel().getValueAt(i,8); 
        if(rr.equals("GREEN")) 
        { 
       setBackground(Color.GREEN); 
        } 
        if(rr.equals("red")) 
        { 
         setBackground(Color.red); 
        } 
        if(rr.equals("BLUE")) 
        { 
         setBackground(Color.BLUE); 
        } 
         if(rr.equals("yellow")) 
        { 
        setBackground(Color.yellow); 
        } 
         if(rr.equals("pink")) 
        { 
        setBackground(Color.pink); 
        } 
         if(rr.equals(null)) 
        { 
        setBackground(null); 
        } 

如何能幫助我在這個問題?

+2

你真的應該問之前做一些研究。這是一個非常常見和容易的事情。 http://stackoverflow.com/a/3550006/933756 – Quinma 2012-07-16 15:59:17

+0

可能重複[更改JTable中的行的背景顏色](http://stackoverflow.com/questions/3875607/change-the-background-color- )一個排-IN-A-的JTable – 2012-07-16 17:37:08

+0

你可能想通過http://docs.oracle.com/javase/tutorial/uiswing/components/table.html讀的[ – MadProgrammer 2012-07-16 18:15:19

回答

1

setBackground()設置JTable的背景顏色,而不是每一行或單元格的背景顏色。 @Recursed說,你需要一個TableCellRenderer

1

如果你正在做的是改變行的顏色,繼承你的JTable並覆蓋prepareRenderer方法:

public Component prepareRenderer(TableCellRenderer renderer, 
          int row, 
          int column) {  
    Component c = super.prepareRenderer(renderer, row, column); 
    if (row == HIGHLIGHT_ROW) { 
      c.setBackground(BG_COLOR); 
    } 
    return c; 
} 
+0

我試着寫你的代碼,但它顯示到我這個錯誤不能找到符號 符號:方法prepareRenderer(javax.swing.table.TableCellRenderer,INT,INT) – 2012-07-17 15:01:31

+0

嗯......我需要更多的信息來告訴你更多關於什麼是錯的。什麼是完整的錯誤信息?你試圖運行的代碼是什麼? – BenCole 2012-07-17 15:29:17