>Java >java지도 시간 >JCheckBox 행 선택을 사용하여 JTable에서 선택한 행을 효율적으로 가져오는 방법은 무엇입니까?

JCheckBox 행 선택을 사용하여 JTable에서 선택한 행을 효율적으로 가져오는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-22 13:03:17658검색

How to Efficiently Get Selected Rows from a JTable with JCheckBox Row Selection?

선택한 행 추적을 사용하여 JTable에서 선택한 행 가져오기

문제:
JTable에서 선택한 행을 효율적으로 가져옵니다. 행 선택을 위한 첫 번째 열에 JCheckBox가 있는 JTable입니다. 행 수가 많으면 순차 순회가 비효율적입니다.

기존 접근 방식:
모든 행을 순차적으로 반복하여 선택한 행을 가져옵니다. 이 접근 방식은 수천 개의 행을 처리할 때 문제가 됩니다.

제안 접근 방식:
모델 기반 추적:

  • 업데이트 Set JCheckBox 값이 변경될 때마다 선택한 행 인덱스를 포함합니다.
  • 테이블 모델의 리스너 클래스는 Set 행 선택 기준.

코드 예:

import javax.swing.table.AbstractTableModel;
import java.util.Set;
import java.util.TreeSet;

public class CheckModel extends AbstractTableModel {

    // ...

    private Set<Integer> checked = new TreeSet<>();

    // ...

    @Override
    public void setValueAt(Object aValue, int row, int col) {
        boolean b = (Boolean) aValue;
        rowList.set(row, b);
        if (b) {
            checked.add(row);
        } else {
            checked.remove(row);
        }
        fireTableRowsUpdated(row, row);
    }
}

추가 최적화:

  • TreeSet과 같은 경량 데이터 구조를 사용하여 효율적인 작업을 위해 선택한 행 인덱스를 저장합니다.
  • 메모리 소비가 문제가 되는 경우 선택한 행을 저장하기 위해 다른 데이터 구조를 사용하는 것이 좋습니다.

모델 기반 접근 방식의 이점:

  • 총 개수에 관계없이 선택한 행에 대한 지속적인 액세스 행.
  • 순차 순회가 필요하지 않아 선택 검색의 효율성이 높습니다.

위 내용은 JCheckBox 행 선택을 사용하여 JTable에서 선택한 행을 효율적으로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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