2009-06-12 11 views
3

후 작업을 수행하고 싶습니다 JTableTableRowSorter이 있습니다. 정렬이 완료되었습니다. 나는 그물을 둘러 보았고, 지금까지 나는 많은 행운이 없었다.RowSort 작업 후 작업 수행

처음에는 RowSorterListener이 트릭을 수행 할 것이라고 생각했지만 불행히도 정렬이 완료된 후에는 조작을 수행하지 않습니다.

JTable 헤더에 MouseListener을 추가해도 작동하지만 해결책은 그리 훌륭하지 않습니다.

누구에게 아이디어가 있습니까?

감사합니다. (주석에서)


편집 다음 AbstractTableModel를 확장하는 사용자 정의 TableModel 클래스 내부의 방법에 추가됩니다. 이 메서드는 사용자 정의 TableModel 클래스에 JTable이 설정되거나 지정 될 때마다 호출됩니다.

sorter.addRowSorterListener(new RowSorterListener() { 
    @Override public void sorterChanged(RowSorterEvent rowsorterevent) { 
     rebuildMItems(); // The method which executes 
    } 
}); 
+0

'RowSorterListener'가 작동해야합니다. RowSorterListener를 추가하는 방법과'sorterChanged' 메소드의 구현을 보여줄 수 있습니까? – akf

+0

Akf, 도움 주셔서 감사합니다. 다음은'AbstractTableModel'을 확장하는 커스텀'TableModel' 클래스 내의 메소드에 추가되었습니다. 이 메소드는,'JTable'가 커스텀'TableModel' 클래스로 설정 또는 지정 될 때마다 불려갑니다.

 sorter.addRowSorterListener(new RowSorterListener() { @Override public void sorterChanged(RowSorterEvent rowsorterevent) { rebuildMItems(); // The method which executes } }); 
너무 흥미로운 것은 없습니다. P –

+0

형식이 잘못되어있는 것처럼 보입니다. Stack Overflow를 처음 접한다고 말할 수 있습니까? :) –

답변

3

두 가지 가능성이 :

  1. 난 당신이 사용자 정의 RowSorter을 참조하십시오. sort() 메서드 끝에 작업을 호출하면됩니다. 당신의 분류기에

    @Override 
    public void sort() { 
        super.sort(); 
        doSomethingAfterSortingIsDone(); 
    } 
    

    : 즉

    , 당신은이를 추가 할 수 있습니까?

  2. 귀하의 현재 방법 (RowSorterListener에서 수행)은 두번 작업을 수행합니다 : SORT_ORDER_CHANGED에 한 번, SORTED에 한 번입니다. 이벤트의 type을 확인하고 올바른 시간에 작업을 수행 할 수 있습니까?

+0

완벽. 무리 mmyers 감사합니다! –