Rumah >Java >javaTutorial >Bagaimana Mendapatkan Baris Terpilih dengan Cekap daripada JTable dengan Pemilihan Baris JCheckBox?

Bagaimana Mendapatkan Baris Terpilih dengan Cekap daripada JTable dengan Pemilihan Baris JCheckBox?

Susan Sarandon
Susan Sarandonasal
2024-11-22 13:03:17693semak imbas

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

Mendapatkan Baris Terpilih dalam JTable dengan Penjejakan Baris Terpilih

Masalah:
Mendapatkan baris terpilih daripada a JTable dengan JCheckBox dalam lajur pertama untuk pemilihan baris. Traversal berurutan menjadi tidak cekap dengan bilangan baris yang banyak.

Pendekatan Tradisional:
Mengulang secara berurutan melalui semua baris untuk mendapatkan baris yang dipilih. Pendekatan ini bermasalah apabila berurusan dengan beribu-ribu baris.

Cadangan Pendekatan:
Penjejakan Berasaskan Model:

  • Kemas kini a Set mengandungi indeks baris yang dipilih apabila nilai JCheckBox berubah.
  • Kelas pendengar pada model jadual mengemas kini Set berdasarkan pemilihan baris.

Contoh Kod:

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

Pengoptimuman Tambahan:

  • Gunakan struktur data yang ringan, seperti TreeSet, untuk menyimpan indeks baris yang dipilih untuk cekap lelaran.
  • Pertimbangkan untuk menggunakan struktur data yang berbeza untuk menyimpan baris terpilih jika penggunaan memori menjadi isu.

Faedah Pendekatan Berasaskan Model:

  • Akses masa yang berterusan kepada baris yang dipilih, tanpa mengira jumlah bilangan baris.
  • Tidak memerlukan traversal berurutan, menjadikan pengambilan pemilihan sangat cekap.

Atas ialah kandungan terperinci Bagaimana Mendapatkan Baris Terpilih dengan Cekap daripada JTable dengan Pemilihan Baris JCheckBox?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn