>  기사  >  Java  >  대규모 데이터 세트가 있는 JTable에서 선택한 행을 효율적으로 검색하려면 어떻게 해야 합니까?

대규모 데이터 세트가 있는 JTable에서 선택한 행을 효율적으로 검색하려면 어떻게 해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-26 02:28:09809검색

How Can I Efficiently Retrieve Selected Rows from a JTable with Large Datasets?

AbstractTableModel을 사용하여 JTable에서 선택한 행을 효율적으로 가져오기

JTable에서 선택한 행을 검색하는 프로세스는 대규모 데이터 세트를 처리할 때 비효율적일 수 있습니다. , 모든 행을 순차적으로 순회해야 하기 때문입니다. 이 기사에서는 AbstractTableModel 기반 리스너 메커니즘을 사용하는 보다 효율적인 접근 방식을 제시합니다.

문제 설명

행 선택을 위한 첫 번째 열에 JCheckBox가 있는 JTable에서 검색 선택된 행은 확인된 행을 수집하기 위해 모든 행을 반복해야 합니다. 데이터세트가 커지면 이는 바람직하지 않은 접근 방식이 됩니다.

제안 솔루션: TableModel 리스너 구현

이 솔루션에는 JCheckBox 열에 TableModelListener를 추가하는 작업이 포함됩니다. 리스너 클래스 내에서 JCheckBox의 상태가 변경(선택/삭제)될 때마다 selectedRows 배열이 업데이트됩니다. 또한 리스너 클래스 내에서 table.getSelectedRow(..)를 호출하여 선택한 행의 인덱스를 캡처할 수 있습니다.

Is There a Better Way?

제공된 예 TableModel이 Set setValueAt() 메소드의 변경 사항에 따라 이름이 확인됩니다. 인접한 JList는 이 TableModel에 바인딩되어 있으며 선택한 행 번호를 동적으로 표시합니다. 이 방법은 전체 행 수에 비해 선택한 행 수가 적을 때 효율적인 것으로 입증되었습니다.

구현 세부 정보

CheckModel 클래스는 AbstractTableModel을 확장하고 rowList를 처리하고 검사된 항목을 확인합니다. 설정하여 체크박스 상태 변경에 따라 유지합니다. DisplayPanel 클래스에는 테이블 모델 변경을 수신하고 그에 따라 디스플레이를 업데이트하는 JList가 포함되어 있습니다.

결론

작은 데이터세트의 경우 순차 행 순회 접근 방식이 충분할 수 있지만, 위에 표시된 TableModel 리스너 또는 대체 방법을 사용하면 대규모 데이터 세트를 처리할 때 효율성이 크게 향상됩니다. 이러한 기술을 사용하면 테이블 크기에 관계없이 선택한 행을 효율적으로 검색할 수 있습니다.

위 내용은 대규모 데이터 세트가 있는 JTable에서 선택한 행을 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.