"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Jcheckbox 행 선택을 사용하여 JTable에서 선택된 행을 효율적으로 얻는 방법은 무엇입니까?

Jcheckbox 행 선택을 사용하여 JTable에서 선택된 행을 효율적으로 얻는 방법은 무엇입니까?

2025-02-06에 게시되었습니다
검색:205

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

전통적인 접근법 :

는 모든 행을 순차적으로 반복하여 선택된 행을 얻습니다. 이 접근법은 수천 행을 다룰 때 문제가됩니다.
제안 된 접근법 :

모델 기반 추적 :

업데이트 업데이트 Jcheckbox 값이 변경 될 때마다 선택된 행 지수를 포함하는 세트.
테이블 모델의 리스너 클래스는 행 선택에 따라 세트를 업데이트합니다. &&] 코드 예 : &&&] import javax.swing.table.abstracttablemodel; java.util.set import; java.util.treeset import; 공개 클래스 checkmodel 확장 actractTableModel { // ... 개인 세트 checked = new Treeset (); // ... @보수 public void setValueat (Object avalue, int row, int col) { 부울 B = (부울) avalue; rowlist.set (row, b); if (b) { checked.add (행); } 또 다른 { checked.remove (행); } FireTablerowsupdated (행, 행); } }

    메모리 소비가 문제가되는 경우 선택된 행을 저장하기 위해 데이터 구조를 사용하는 것을 고려하십시오.

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

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

public class CheckModel extends AbstractTableModel {

    // ...

    private Set 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);
    }
}

총 행 수에 관계없이 선택한 행에 일정한 시간 액세스.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3