2012-08-09 2 views
1

나는 색상을 얻을 때 의미 내가 만든 테이블 모델에서을 getValue 메소드를 오버라이드 (override)하지 않은 그래서색상 값을 조작하는 방법은 무엇입니까?

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

처럼, 인수 중 하나가 색상 테이블을 만들었습니다 값은 객체로옵니다.

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("--------------------------"); 
} 
} 

모든 값이 HashMaps을에 저장됩니다 내가 개체 또는 문자열로 저장하면 내가 값으로 얻을 것이다 그것들은 테이블에 설정된 색을 저장하기 위해 색 벡터를 생성해야하는 다른 클래스로 전달됩니다.

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; 색상 cor = (색상) keyvaluesIterator.next(); colorsstation [i] = cor; –

+2

@ Luis Afonso Teixeira 왜 JTables 셀에 색상을 가져오고 가져 가야하는지에 대한 이유만으로 대답이 더 구체적 일 수 있습니다 :-) – mKorbel

+0

그 테이블에서 값을 가져 와서 해시 맵을 다른 클래스로 가져와 내가 어떤 것을 그릴거야. 거기, 나는 그 클래스에서 드로잉 할 직사각형의 색상을 정의하기 위해 전달 된 색상을 수집하려고합니다! 희망이 지금 내 자신을 분명하게 만들었습니다 : –