2009-12-14 9 views
0

주어진 경우, TableCell에서 동일한 TableCellRenderer/TableCellEditor를 사용하는 대신 특정 유형에 사용할 TableCellRenderer/TableCellEditor를 지정하는 것이 가능합니다. javax.swing.table.TableColumn?Java Swing : Different TableCellRenderers

JTable에서 일부 DefaultCellEditor/Renderer를 지정할 수 있다는 것을 알고 있지만 이것이 내가 원하는 것은 아닙니다.

자세한 내용 (기존 코드 세부 사항)으로 인해 JTable#getCellEditor(int,int)JTable#getCellRenderer(int,int)을 무시할 수 없습니다.

답변

4

나는이 적합한 지 확인하기 위해하는 TableCellRenderer에 충분히 익숙하지 난 ... 어떤 제안을 감사합니다,하지만 당신은 내용에 보이는 하나를 지정할 수없는, 그 유형에 따라 다른 렌더러에 전달 ?

+0

제안 해 주셔서 감사합니다. 이게 내 문제를 해결했습니다! 이제 TableCellRenderer 인터페이스를 구현하고 유형을 검사하여 원하는 CellRenderer로 전달합니다. –

2
public void setDefaultEditor(java.lang.Class<?> columnClass, 
          javax.swing.table.TableCellEditor editor) 

public void setDefaultRenderer(java.lang.Class<?> columnClass, 
           javax.swing.table.TableCellRenderer renderer) 

또는 Carl이 말했듯이. 단일 에디터 렌더러는 돌아온 값을보고 다른 렌더러/편집자에게 위임합니다.

+0

이것들은 테이블 전체의 타입에 대한 디폴트의 에디터/렌더러를 설정합니다. 목표는 열 또는 열 집합에 대해서만 설정하는 것입니다. – akf

2

각각 setDefaultRenderer()setDefaultEditor()은 호출해야하는 특정 클래스를 지정합니다. in this example과 같이 사용자 정의 렌더러와 편집기를 사용하여 컴포지트 유형을 설계하는 것이 매우 쉽습니다. 데이터 모델은 주어진 열에 대해 해당 사용자 정의 유형을 반환해야하지만 렌더러와 편집기는 내용이나 행에 따라 임의로 이러한 값을 자유롭게 해석 할 수 있습니다. 이 예에서 ValueBooleanDouble으로 모두 모델링됩니다. 해당 뷰는 확인란과 형식화 된 10 진수 문자열을 사용하는 반면 ValuecompareTo() 메서드는 숫자 정렬을 보장합니다.