2012-08-09 76 views
1

我創建了一個表,其中的參數之一是顏色,像這樣如何操作顏色值?

table http://www.freeimagehosting.net/newuploads/fjuzi.png

我還沒有覆蓋從我創建表格模型getValue方法,這意味着,當我得到的顏色它們以對象的形式出現。如果我將它們存儲爲對象,或字符串我會得到的數值爲:

java.awt.Color[r=255,g=0,b=0] 

這裏是我的表模型,以防萬一:

private static final Object[][] DATA = { 
    { "1", "Task 1", new Integer(10), false, new Integer(0), Color.red }, 
    { "2", "Task 2", new Integer(10), false, new Integer(0), Color.blue }, 
    { "3", "Task 3", new Integer(10), false, new Integer(0), 
      Color.green }, 
    { "4", "Task 4", new Integer(10), false, new Integer(0), 
      Color.orange }, 
    { "5", "Task 5", new Integer(10), false, new Integer(0), 
      Color.black } }; 

private MyTableModel myTableModel = new MyTableModel(DATA); 





class MyTableModel extends DefaultTableModel { 
private static final String[] COLUMN_NAMES = { "Station #", "Name", 
    "avg Time", "Buffer", "Buffer Parts", "Color" }; 

public MyTableModel(Object[][] data) { 
    super(data, COLUMN_NAMES); 
} 

@Override 
public Class getColumnClass(int c) { 
    //System.out.println("Class for " + c + ": " + getValueAt(0, c).getClass().toString()); 
    return getValueAt(0, c).getClass();   
} 


@Override 
public boolean isCellEditable(int row, int col) { 

    if (col == 0) { 
    return false; 
    } else if (col == 4) { 
    boolean di = (Boolean) getValueAt(row, (col - 1)); 
    if (!di) { 
     return false; 
    } else { 
     return true; 
    } 
    } else { 
    return true; 
    } 
} 

public void printDebugData() { 
    int numRows = getRowCount(); 
    int numCols = getColumnCount(); 

    for (int i = 0; i < numRows; i++) { 
    System.out.print(" row " + i + ":"); 
    for (int j = 0; j < numCols; j++) { 
     Object datum = getValueAt(i, j); 
     // System.out.print(" " + data[i][j]); 
     System.out.print(" " + datum); 
    } 
    System.out.println(); 
    } 
    System.out.println("--------------------------"); 
} 
} 

所有從表中的值存儲在包含HashMap它們被傳遞給另一個類,我需要創建一個顏色向量來存儲已經設置在表上的顏色。

Station 1=[1, Task 1, 10, false, 0, java.awt.Color[r=255,g=0,b=0]] 
Station 2=[2, Task 2, 10, false, 0, java.awt.Color[r=0,g=0,b=255]] 
Station 3=[3, Task 3, 10, false, 0, java.awt.Color[r=0,g=255,b=0]] 
Station 4=[4, Task 4, 10, false, 0, java.awt.Color[r=255,g=200,b=0]] 
Station 5=[5, Task 5, 10, false, 0, java.awt.Color[r=0,g=0,b=0]] 

我環顧四周,但沒有找到任何信息,所以有什麼對付它,所以我可以存儲與傳遞值所使用的顏色的最佳方法是什麼?

我希望自己清楚,如果需要其他信息,請告訴我。

回答

7

您從getValueAt()得到的值是實際的java.awt.Color對象;這只是該方法的返回類型是Object。您需要值:

Color color = (Color) tableModel.getValueAt(0, 5); 

現在你有一個Color變量指向的對象,你可以做任何你想做的事情。

+0

我沒有意識到這一點。但是,如何用這些值填充顏色矢量?通過這樣做,我得到一個「NoSuchElementException」: private static Color colorsstation [] = null; Color cor =(Color)keyvaluesIterator.next(); colorsstation [i] = cor; – 2012-08-09 18:17:25

+2

@Luis Afonso Teixeira爲什麼你需要獲取/將顏色添加到JTables單元格中,只有這樣才能得到更具體的答案:-) – mKorbel 2012-08-09 18:28:56

+0

我從該表中獲取值並將它們作爲散列圖到另一個類,我將繪製一些東西。在那裏,我試圖收集傳遞的顏色來定義我將在該類上繪製的矩形的顏色!希望我現在明白了:s – 2012-08-09 18:38:57