JavaTM Platform
Standard Ed. 6

javax.swing.table
클래스 TableRowSorter<M extends TableModel >

java.lang.Object 
  상위를 확장 javax.swing.RowSorter <M>
      상위를 확장 javax.swing.DefaultRowSorter <M,Integer >
          상위를 확장 javax.swing.table.TableRowSorter<M>
형태 파라미터:
M - 모델의 형태. TableModel 의 구현일 필요가 있다


public class TableRowSorter<M extends TableModel >
extends DefaultRowSorter <M,Integer >

TableModel 를 사용해 소트 및 필터 기능을 제공하는 RowSorter 의 구현입니다. 다음에 나타내는 것은,JTable 에 소트 기능을 추가하는 예입니다.

   TableModel myModel = createMyTableModel();
   JTable table = new JTable(myModel);
   table.setRowSorter(new TableRowSorter(myModel));
 
이 코드는, 사용자가 적절한 제스처(gesture) (열헤더의 클릭등)를 실행했을 때 테이블이 시각적으로 소트 되도록(듯이), 접속 처리를 실시합니다.

JTable 의 행 베이스의 메소드와 JTable 의 선택 모델은, 뷰를 참조합니다만, 부하의 모델은 참조하지 않습니다. 따라서, 2 개의 사이에 변환을 실시할 필요가 있습니다. 예를 들어,myModel 의 선택을 실시하는 경우는, 다음과 같이 인덱스를 변환할 필요가 있습니다.

   int[] selection = table.getSelectedRows();
   for (int i = 0; i < selection.length; i++) {
     selection[i] = table.convertRowIndexToModel(selection[i]);
   }
 
좌표에 근거한 JTable 내의 행을 선택할 때와 같게, 부하의 모델로부터 반대의 처리를 실시합니다.
   table.setRowSelectionInterval(table.convertRowIndexToView(row),
                                 table.convertRowIndexToView(row));
 

전의 예는, 필터 기능이 유효하게 되지 않은 경우의 예입니다. 필터 기능이 유효하게 되어 있는 경우,convertRowIndexToView 는, 뷰에 표시되지 않는 장소에 대해서 -1 를 돌려줍니다.

TableRowSorter 는, 비교때,Comparator 를 사용합니다. 열에 대해서 Comparator 를 선택하는 방법은, 다음과 같이 정의합니다.

  1. 열의 ComparatorsetComparator 메소드를 사용해 지정되고 있는 경우는, 이 메소드를 사용합니다.
  2. getColumnClass 로부터 반환되는 열클래스가 String 의 경우는,Collator.getInstance() 로부터 반환되는 Comparator 를 사용합니다.
  3. 열클래스가 Comparable 를 구현하는 경우는,compareTo 메소드를 호출하는 Comparator 을 사용합니다.
  4. TableStringConverter 가 지정되고 있는 경우는, 이것을 사용해 값을 String 로 변환해,Collator.getInstance() 로부터 반환되는 Comparator 를 사용합니다.
  5. 그 이외의 경우는, 객체상에서 toString 를 호출한 결과에 대해서,Collator.getInstance() 로부터 반환되는 Comparator 를 사용합니다.

TableRowSorter 는, 소트 기능 외에 필터 기능도 제공합니다. 필터의 지정에는,setFilter 메소드를 사용합니다. 다음에 나타내는 것은, 캐릭터 라인 「foo」를 포함한 행만을 표시하는 예입니다.

   TableModel myModel = createMyTableModel();
   TableRowSorter sorter = new TableRowSorter(myModel);
   sorter.setRowFilter(RowFilter.regexFilter(". *foo. *"));
   JTable table = new JTable(myModel);
   table.setRowSorter(sorter);
 

부하의 모델의 구조가 변화했을 경우 (modelStructureChanged 메소드가 불려 갔을 경우), 열의 Comparator, 현재의 소트 순서, 및 각 열이 소트 가능한지 어떤지의 설정이 리셋 되어 디폴트 값에 돌아옵니다. 디폴트에서는 소트는 행해지지 않고 (모델과 같이), 열은 소트 가능합니다.

TableRowSorter 에는, 가파라미터형 (모델의 형태)이 1 개 있습니다. 모델에 정확하게 대응하는 형태를 건네주는 것으로, 캐스트없이 모델에 근거해 필터를 적용할 수가 있습니다. 이 예에 대해서는 RowFilter 의 설명을 참조해 주세요.

경고: DefaultTableModelObject 의 열클래스를 돌려줍니다. 그 때문에, 모든 비교는 toString 를 사용해 행해집니다. 이것은 부하가 클 가능성이 있습니다. 열에 1 개의 형태 (Integer 등) 밖에 포함되지 않는 경우는,getColumnClass 를 오버라이드(override) 해 적절한 Class 를 돌려주도록(듯이) 합니다. 이것에 의해, 이 클래스의 퍼포먼스가 비약적으로 향상합니다.

도입된 버젼:
1.6
관련 항목:
JTable , RowFilter , DefaultTableModel , Collator , Comparator

상자의 클래스의 개요
 
클래스 javax.swing. DefaultRowSorter 로부터 상속된 상자의 클래스/인터페이스
DefaultRowSorter.ModelWrapper <M ,I >
 
클래스 javax.swing. RowSorter 로부터 상속된 상자의 클래스/인터페이스
RowSorter.SortKey
 
생성자 의 개요
TableRowSorter ()
          빈 상태(empty)의 모델로 TableRowSorter 를 작성합니다.
TableRowSorter (M  model)
          model 를 부하의 TableModel 로서 사용해,TableRowSorter 를 작성합니다.
 
메소드의 개요
 Comparator <? > getComparator (int column)
          지정된 열의 Comparator 를 돌려줍니다.
 TableStringConverter getStringConverter ()
          값을 모델로부터 캐릭터 라인으로 변환하기 위해서(때문에) 사용하는 객체를 돌려줍니다.
 void setModel (M  model)
          이 TableRowSorter 의 부하의 모델로서 사용하는 TableModel 를 설정합니다.
 void setStringConverter (TableStringConverter  stringConverter)
          값을 모델로부터 캐릭터 라인으로 변환하기 위해서(때문에) 사용하는 객체를 설정합니다.
protected  boolean useToString (int column)
          소트시에 비교를 실시하기 전에, 값을 캐릭터 라인으로 변환할지 어떨지를 돌려줍니다.
 
클래스 javax.swing. DefaultRowSorter 로부터 상속된 메소드
allRowsChanged , convertRowIndexToModel , convertRowIndexToView , getMaxSortKeys , getModel , getModelRowCount , getModelWrapper , getRowFilter , getSortKeys , getSortsOnUpdates , getViewRowCount , isSortable , modelStructureChanged , rowsDeleted , rowsInserted , rowsUpdated , rowsUpdated , setComparator , setMaxSortKeys , setModelWrapper , setRowFilter , setSortable , setSortKeys , setSortsOnUpdates , sort , toggleSortOrder
 
클래스 javax.swing. RowSorter 로부터 상속된 메소드
addRowSorterListener , fireRowSorterChanged , fireSortOrderChanged , removeRowSorterListener
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

TableRowSorter

public TableRowSorter()
빈 상태(empty)의 모델로 TableRowSorter 를 작성합니다.


TableRowSorter

public TableRowSorter(M  model)
model 를 부하의 TableModel 로서 사용해,TableRowSorter 를 작성합니다.

파라미터:
model - 사용하는 부하의 TableModel. null 치는 빈 상태(empty)의 모델로서 다루어진다
메소드의 상세

setModel

public void setModel(M  model)
TableRowSorter 의 부하의 모델로서 사용하는 TableModel 를 설정합니다. null 치를 지정하면(자), 빈 상태(empty)의 모델을 설정할 수가 있습니다.

파라미터:
model - 사용하는 부하의 모델, 또는 null

setStringConverter

public void setStringConverter(TableStringConverter  stringConverter)
값을 모델로부터 캐릭터 라인으로 변환하기 위해서(때문에) 사용하는 객체를 설정합니다. null 이외의 값을 지정했을 경우, 등록을 마친 Comparator 를 가지지 않는 객체치를 캐릭터 라인으로 변환할 수가 있습니다.

파라미터:
stringConverter - 치를 모델로부터 캐릭터 라인으로 변환하기 위해서(때문에) 사용하는 객체

getStringConverter

public TableStringConverter  getStringConverter()
값을 모델로부터 캐릭터 라인으로 변환하기 위해서(때문에) 사용하는 객체를 돌려줍니다.

반환값:
치를 모델로부터 캐릭터 라인으로 변환하기 위해서(때문에) 사용하는 객체

getComparator

public Comparator <? > getComparator(int column)
지정된 열의 Comparator 를 돌려줍니다. setComparator 메소드를 사용해 Comparator 를 지정하고 있지 않는 경우, 지정한 열의 열클래스 (TableModel.getColumnClass)에 근거해 Comparator 가 돌려주어집니다. 열클래스가 String 의 경우,Collator.getInstance 가 돌려주어집니다. 열클래스가 Comparable 를 구현하는 경우는,compareTo 메소드를 호출하는 private 의 Comparator 가 돌려주어집니다. 그렇지 않은 경우는,Collator.getInstance 가 돌려주어집니다.

오버라이드(override):
클래스 DefaultRowSorter <M extends TableModel ,Integer > 내의 getComparator
파라미터:
column - 부하의 모델에 근거해,Comparator 를 페치 하는 열
반환값:
지정된 열의 Comparator
예외:
IndexOutOfBoundsException - 열이 부하의 모델의 범위외에 있는 경우

useToString

protected boolean useToString(int column)
소트시에 비교를 실시하기 전에, 값을 캐릭터 라인으로 변환할지 어떨지를 돌려줍니다. true 의 경우는 ModelWrapper.getStringValueAt 를 사용해, 그렇지 않은 경우는 ModelWrapper.getValueAt 를 사용합니다. ModelWrapper 구현내에서 이 값을 받는,TableRowSorter 등의 서브 클래스에 일치합니다.

오버라이드(override):
클래스 DefaultRowSorter <M extends TableModel ,Integer > 내의 useToString
파라미터:
column - 부하의 모델에 근거해, 테스트하는 열의 인덱스
예외:
IndexOutOfBoundsException - column 가 유효하지 않은 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.