2
두 개의 열이있는 테이블이 있습니다 : 특성 및 값! 속성은 enum입니다. 이제 enum 클래스의 셀 렌더러를 설정합니다 (소문자로 표시해야 함).열거 형의 표 셀 렌더러
문제는 테이블이 렌더러를 호출하지 않는다는 것입니다.
열거 (단지 예) :
public enum Attribute {
BLUE,BLACK,RED;
}
셀 렌더러 :
public class AttributeTableCellRenderer
extends
AbstractTableCellRenderer<Attribute> {
@Override
protected Object getText(Attribute attribute) {
System.out.println("call");
if (null == attribute) {
return null;
}
return attribute.toLowerCase();
}
}
표 (단지 예) : 당신은 당신의 자신의 구현을 제공 할 필요가
// table model
Vector<Object> v;
Vector<String> header = new Vector<String>(Arrays.asList("attribute", "values"));
Vector<Vector<?>> data = new Vector<Vector<?>>();
// fill with data
for (final Attribute attribute : Attribute.values()) {
v = new Vector<Object>();
v.add(attribute);
v.add("blah");
data.add(v);
}
//table
TableModel tm = new DefaultTableModel(data, header);
JTable table = new JTable(tm);
table.setDefaultRenderer(String.class, new DefaultTableCellRenderer());
table.setDefaultRenderer(Attribute.class, new AttributeTableCellRenderer());
// will work
//table.setDefaultRenderer(Object.class, new AttributeTableCellRenderer());
DefaultTableModel # getColumnClass()를 재정 의하여 DefaultTableModel 기능을 유지할 수 있습니다. –
아의 아. 나는이 방법을 무시하는 것을 잊는다. 때때로 당신은 명백한 것을 그리워합니다. :-) 고마워요! –