1

引数の1つが色であるテーブルを作成しました。

テーブル

作成したテーブルモデルの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("--------------------------");
 }
}

テーブルのすべての値はハッシュマップに格納され、別のクラスに渡されます。このクラスでは、テーブルに設定された色を格納するために色ベクトルなどを作成する必要があります。

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]]

周りを見回しましたが、情報が見つかりませんでした。渡された値で使用する色を保存できるように、それを処理するための最良の方法は何ですか?

他の情報が必要な場合は、私に知らせてください。

4

1 に答える 1

7

取得する値getValueAt()は実際のjava.awt.Colorオブジェクトです。メソッドの戻り値の型がObject. 値をキャストする必要があります。

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

これColorで、オブジェクトを指す変数ができたので、それを使って好きなことを行うことができます。

于 2012-08-09T17:48:50.080 に答える