2013-01-31 2 views
1

데이터베이스의 데이터를로드 한 다음 테이블 아래쪽에 요약 행을 생성하는 JTable이 있습니다. 나는 사용자가 테이블을 정렬 할 수 있기를 원하지만 요약 행이 항상 테이블의 맨 아래에 남아 있도록하고 싶습니다.Java JTable - 사용자 정의 행 정렬 도구

커스텀 TableRowSorter를 만들려고했지만, 알아 내려고 원하는대로하기가 어려웠습니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까? 감사합니다.

+2

[SSCCE] (http://sscce.org/) – Amarnath

+0

[* 정렬 및 필터링 *] (http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#sorting) 근처에서 예제를 시작할 수 있습니다. – trashgod

+0

제안 해 주셔서 감사합니다! (실제로 게시 할 항목이 없었기 때문에 어떤 코드도 게시하지 않았습니다. 행 분류기로 시작하는 위치가 어디 인지도 확실하지 않았습니다.) – Arrdeearr

답변

3

값이 요약인지 아닌지를 결정하는 클래스가 필요합니다. SummaryComparator를 반환해야이

public class SummarizedValue { 
    public Integer value; 
    public boolean summarized; 
    public String toString() { 
    return null == value? "" : value.toString(); 
    } 
} 

public class SummaryComparator implements Comparator<SummarizedValue> { 
    public int compare(SummarizedValue v1, SummarizedValue v2) { 
    if (v1.summarized) return 1; 
    if (v2.summarized) return -1; 
    return v1.value.compareTo(v2.value); 
    } 
} 

public class SummaryBackComparator implements Comparator<SummarizedValue> { 
    public int compare(SummarizedValue v1, SummarizedValue v2) { 
    if (v1.summarized) return 1; 
    if (v2.summarized) return -1; 
    return v2.value.compareTo(v1.value); 
    } 
} 

같은 뭔가 당신은 당신의 열의 클래스 SummarizedValue의 객체와 행 분류기를 표시해야합니다. 또한 SummaryBackComparator을 사용하도록 RowSorter의 토글 동작을 재정의해야합니다.

+0

굉장! 이것은 내가 찾고 있었던 바로 그 것이다. 고맙습니다. – Arrdeearr

+0

+1하지만 Java6의 경우 Comparator를 만들 필요가 없다고 생각합니다. 특별한 경우가 있지만 .... 'value? "": value.toString(); :-)' – mKorbel