Dengan Cekap Mendapatkan Baris Terpilih daripada JTable menggunakan AbstractTableModel
Proses mendapatkan semula baris terpilih daripada JTable boleh menjadi tidak cekap apabila berurusan dengan set data yang besar , kerana ia melibatkan merentasi semua baris secara berurutan. Artikel ini membentangkan pendekatan yang lebih cekap menggunakan mekanisme pendengar berasaskan AbstractTableModel.
Pernyataan Masalah
Dalam JTable dengan JCheckBox dalam lajur pertama untuk pemilihan baris, mendapatkan semula baris yang dipilih memerlukan lelaran melalui semua baris untuk mengumpulkan baris yang disemak. Apabila set data berkembang, ini menjadi pendekatan yang tidak diingini.
Penyelesaian Cadangan: Laksanakan Pendengar TableModel
Penyelesaian melibatkan penambahan TableModelListener pada lajur JCheckBox. Apabila keadaan JCheckBox berubah (PILIH/DIPILIH) dalam kelas pendengar, tatasusunan Rows yang dipilih dikemas kini. Selain itu, table.getSelectedRow(..) boleh digunakan dalam kelas pendengar untuk menangkap indeks baris yang dipilih.
Adakah Terdapat Cara yang Lebih Baik?
Contoh yang disediakan mempamerkan pendekatan alternatif, di mana TableModel mengemas kini Set
Butiran Pelaksanaan
Kelas CheckModel memanjangkan AbstractTableModel dan mengendalikan rowList dan diperiksa set, mengekalkannya berdasarkan perubahan keadaan kotak semak. Kelas DisplayPanel mengandungi JList yang mendengar perubahan model jadual dan mengemas kini paparannya dengan sewajarnya.
Kesimpulan
Walaupun pendekatan traversal baris berjujukan mungkin mencukupi untuk set data kecil, menggunakan pendengar TableModel atau kaedah ganti yang ditunjukkan di atas memberikan keuntungan kecekapan yang ketara apabila berurusan dengan set data yang besar. Teknik ini membolehkan mendapatkan semula baris terpilih dengan cekap, tanpa mengira saiz jadual.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Kembali Baris Terpilih daripada JTable dengan Set Data Besar dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!