JTable
最初の 2 つの列に文字列が含まれ、残りの列にアイコン (具体的には、クラスのオブジェクト) が含まれる を作成していますImageIcon
。どちらの方法も知っていますが、1 つのテーブルに両方を混在させて、一部の列が文字列を返し、他の列がアイコンを返すようにするにはどうすればよいですか?
--EDIT--
コードの説明: データは 2D 文字列配列です。最初の 2 列については、表にそのまま表示したいと考えています。残りのすべての列では、可能な値は「Y」または「N」の 2 つだけです。「Y」がある場合は ImageIcon を表示し、「N」がある場合は空白のままにします。
(知っておくと役立つ場合は、値が「Y」の場合は目盛りアイコンを表示する比較表を描画しています。それ以外の場合は、値が「N」の場合はセルを空のままにしておきます)
現在、出力は次のようになります:
PATH_TO_ICON の値 ("//home//....") の場合は "Y"
"javax.swing.ImageIcon@288e509b" の場合は "N"
class MyTableModel extends AbstractTableModel {
private Object[][] data;
private String[] headers;
public MyTableModel(String[][] data, String[] headers) {
super();
this.data = data;
this.headers = headers;
}
@Override
public int getColumnCount() {
return headers.length;
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public Object getValueAt(int row, int col) {
if (col < 2) {
return data[row][col];
} else {
if (data[row][col].equals("Y")) {
return new ImageIcon(PATH_TO_ICON);
} else if(data[row][col].equals("N")) {
return new ImageIcon();
} else return null;
}
}
@Override
public Class<?> getColumnClass(int col) {
if (col < 2) {
return String.class;
} else {
return ImageIcon.class;
}
}
}