2010-11-30 3 views
0

더블 클릭을 청취 한 다음 특정 열의 상세 뷰를 여는 ListSelectionListener를 사용하여 정렬 가능한 기본 테이블 모델을 가지고 있습니다. 그러나 잘 작동하지만, 열을 정렬 할 때 리스너는 더 이상 작동하지 않습니다.테이블을 정렬하면 TableRowListener가 손상됩니까?

JTable foosTable = new JTable(model); 
TableRowSorter<TableModel> fooSorter = new TableRowSorter<TableModel>(model); 
foosTable.setRowSorter(fooSorter); 
ListSelectionModel listMod = foosTable.getSelectionModel(); 
listMod.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
ListSelectionListener barListener = new ListSelectionListener(foosTable); 
listMod.addListSelectionListener(barListener); 
+1

일부 코드를 표시 할 수 있습니까? 감사. –

+1

TableRowListener에 대해 들어 본 적이 없습니다. – camickr

+0

@camickr. org.smir.util.table 패키지에있는 것 같습니다. http://andi-smirre.ath.cx/javadoc/org.smir.util.table/org/smir/util/table/TableRowListener.html 사용하지 마십시오. 자기. –

답변

1

나는 단지 itemChanged 이벤트를 갖고있는 것 같아요 TableRowListener을 사용한 적이있다. 나는 보통 표준 스윙을 고수한다. 마우스 수신기를 표에 추가하고 클릭 이벤트의 위치를 ​​파악한 다음 처리합니다.

jTable.addMouseListener(new java.awt.event.MouseAdapter() { 
    public void mouseClicked(java.awt.event.MouseEvent evt) { 
     Point p = new Point(evt.getX(), evt.getY()); 
     int col = jTable.columnAtPoint(p); 
     int row = jTable.rowAtPoint(p); 
     if (evt.getButton() == MouseEvent.BUTTON1) 
     { 
      if (evt.getClickCount() >= 2) 
      { 
       ... 
       ... 
      } 
     }); 

편집 설정은 TableRowSorter :

TableRowSorter<YourJTableModel> sorter = 
     new TableRowSorter<YourJTableModel>(yourJTableModel); 
    jTable.setRowSorter(sorter); 

당신이 행 순서를 변경되기 때문에 뷰에 대한 올바른 모델 데이터를 얻을 수 convertColumnIndexToModel 를 사용해야합니다.

더 복잡한 정렬/필터링 요구의 경우 glazed lists을 사용해보십시오.

+0

테이블을 정렬 할 수 있습니까? – davidahines

+1

예, 편집을 참조하십시오. –

+0

Muchos Gracias Amigo. – davidahines

관련 문제