JTable
을 사용하면 열 머리글을 클릭 할 때 열이 정렬되지만 그 열 이름을 마우스 오른쪽 단추로 클릭하면 함수 이름 'sort'가 표시되어야한다는 것을 알고 있습니다. 그것을하는 어떤 제안?열을 정렬하는 jTable에 함수를 추가하는 방법은 무엇입니까?
0
A
답변
3
MouseListener
을 테이블에 추가하여 시작하십시오. How to write mouse listeners
클릭 지점을 열로 변환해야합니다 (JTable#columnAtPoint
참조).
그러면 SortKey
테이블을 업데이트해야합니다. 내가 제대로 이해하면
2
, 당신은 보통 왼쪽 클릭으로의 대신 (팝업에서 f.i. 트리거) 어떤 명시적인 작용에 의해 정렬 할 예제 Sorting and Filtering를 확인하십시오.
그렇다면 위변조는 아무 것도하지 않는 것이 좋습니다. UI 위양에 의해 설치된 기본 마우스 수신기에
- 후크, described in a recent QA
- 과 UI가 물건을 할 수 있도록하지만, (규칙을 준수하지 않는 분류기 구현하여 바보 : 두 가지 옵션이 있습니다을 조심 : 그 첫 번째 방법처럼 더러운)
침습 행동하는 분류기!
public class MyTableRowSorter extends TableRowSorter {
public MyTableRowSorter(TableModel model) {
super(model);
}
/**
* Implemented to do nothing to fool tableHeader internals.
*/
@Override
public void toggleSortOrder(int column) {
}
/**
* The method that really toggles, called from custom code.
*
* @param column
*/
public void realToggleSortOrder(int column) {
super.toggleSortOrder(column);
}
}
// 사용
final JTable table = new JXTable(new AncientSwingTeam());
table.setRowSorter(new MyTableRowSorter(table.getModel()));
Action toggle = new AbstractAction("toggleSort") {
@Override
public void actionPerformed(ActionEvent e) {
JXTableHeader header = SwingXUtilities.getAncestor(
JXTableHeader.class, (Component) e.getSource());
Point trigger = header.getPopupTriggerLocation();
int column = trigger != null ? header.columnAtPoint(trigger) : -1;
if (column < 0) return;
int modelColumn = header.getTable().convertColumnIndexToModel(column);
((MyTableRowSorter) header.getTable().getRowSorter())
.realToggleSortOrder(modelColumn);
}
};
JPopupMenu menu = new JPopupMenu();
menu.add(toggle);
table.getTableHeader().setComponentPopupMenu(menu);
그래, :-) 일반 스윙으로 저를 게으른, 당신은 더 몇 줄을 작성해야하지만, 기본은 동일, 일부 SwingX API를 던지 저항 할 수 없었다 : 설치 교묘 한 분류기 및 사용자 정의 토글을 사용 정말 정렬 필요, fi mouseListener를 작성합니다.
관련 문제
- 1. 값이있는 열을 JTable에 추가하는 방법은 무엇입니까?
- 2. 헤더와 데이터가있는 열을 JTable에 추가하는 방법
- 3. jTable에 레코드를 추가하는 방법은 무엇입니까?
- 4. 다른 클래스의 jtable에 데이터를 추가하는 방법은 무엇입니까?
- 5. JTable에 "입력 값"수신기를 추가하는 방법은 무엇입니까?
- 6. jquery jtable에 timepicker를 추가하는 방법은 무엇입니까?
- 7. AbstractTableModel을 사용하여 JTable에 행을 추가하는 방법은 무엇입니까?
- 8. JTable에 추가하는 방법?
- 9. timedate 열을 기준으로 gridview 열을 정렬하는 방법은 무엇입니까?
- 10. libreoffice-calc에 다른 열을 참조하는 함수를 추가하는 방법은 무엇입니까?
- 11. 합계 열을 기준으로 정렬하는 방법은 무엇입니까?
- 12. 두 html 테이블간에 열을 정렬하는 방법은 무엇입니까?
- 13. 계층 적으로 열을 정렬하는 방법은 무엇입니까?
- 14. 자바에서 텍스트 파일의 열을 정렬하는 방법은 무엇입니까?
- 15. 여러 열을 기반으로 DataTable을 정렬하는 방법은 무엇입니까?
- 16. 특정 열을 기준으로 격자보기를 정렬하는 방법은 무엇입니까?
- 17. QTreeWidget 열을 자동으로 정렬하는 방법은 무엇입니까?
- 18. vTiger에서 테이블 열을 정렬하거나 정렬하는 방법은 무엇입니까?
- 19. MySQL 열을 오름차순으로 정렬하는 방법은 무엇입니까?
- 20. 등급 열을 추가하는 방법은 무엇입니까?
- 21. 테이블에 열을 추가하는 방법은 무엇입니까?
- 22. 열을 행렬에 추가하는 방법은 무엇입니까?
- 23. pentaho보고에 열을 추가하는 방법은 무엇입니까?
- 24. JTable에 JCheckBox를 추가하는 방법
- 25. 함수를 함수에 추가하는 방법은 무엇입니까?
- 26. JTable에 현재 텍스트를 입력하는 방법은 무엇입니까?
- 27. JTable에 행을 추가하는 "애니메이션"방법
- 28. 동적으로 JTable에 이미지를 추가하는 방법
- 29. 나누기의 지수가있는 여러 열을 추가하는 함수를 작성하십시오.
- 30. MYSQL에서 길이가 다른 영숫자 열을 정렬하는 방법은 무엇입니까?
왜 사용자에게 어려움이 있습니까? – kleopatra
@kleopatra 실제로 열 머리글을 클릭 할 때 실수로 열을 정렬하지 않기 때문에 클라이언트에서 요구하는 것입니다. :) – John11