Mendeteksi Aksi Perubahan Baris yang Terseleksi di JTable

JTable merupakan komponen grid yang terdiri dari baris dan kolom. JTable merupakan komponen yang dapat digunakan untuk menampilkan data seperti pada spreadsheet. Hal yang paling membingungkan bagi pemula di Java Swing adalah, bagaimana cara mendeteksi aksi perubahan baris yang terseleksi di JTable, baik itu saat menggunakan Mouse dan juga saat menggunakan Key Board.

JTable memiliki Mouse Listener untuk mendeteksi aksi mouse dan Key Listener untuk mendeteksi aksi keyboard. Mouse Listener dan Key Listener tidak dianjurkan untuk melakukan pendeteksian perubahan baris, kenapa? Mouse Listener hanya dapat mendeteksi aksi mouse, sehingga jika baris diubah menggunakan keyboard, maka tidak dapat terdeteksi. Key Listener juga hanya dapat mendeteksi aksi keyboard, sehingga jika baris diubah menggunakan mouse, maka tidak dapat terdeteksi. Lantas bagaimana jika digabung? Mouse Listener dan Key Listener?

Walaupun Mouse Listener dan Key Listener digabung, tetap tidak cocok untuk mendeteksi perubahan baris, kenapa? Karena yang kita perlukan adalah mendeteksi jika baris yang terseleksi berubah, sedankang jika dengan Mouse Listener dan Key Listener, maka seluruh aksi mouse, walaupun diluar baris, misal di kepala JTable, maka aksi tersebut akan didengarkan, dan walaupun kita mengetik hurup A, B, C dan Z akan tetap didengarkan aksinya, padahal untuk merubah row kita hanya perlu menggunakan KEY UP dan KEY DOWN.

Lantas solusi apa yang baik?

Solusinya sederhana, Anda dapat menggunakan ListSelectionModel milik JTable. Untuk mendapatkannya Anda dapat menggunakan getSelectionModel(). ListSelectionModel memiliki metode addListSelectionListener(...), metode tersebut digunakan untuk menambah listener ketika seleksi baris berubah.

Misal jika Anda memiliki sebuah Form sebagai berikut :

Form

Form

Setelah itu tambahkan ListSelectionListener pada ListSelectionModel-nya :

Hasilnya adalah sebagai berikut :

JTable Selection Model Demo

JTable Selection Model Demo

Selamat mencoba :D

8 thoughts on “Mendeteksi Aksi Perubahan Baris yang Terseleksi di JTable

  1. Assalamualaikum kang…saya mau nanya ne….gimana ya caranya menampilkan tanggal yang sudah disimpan dari database ke jDateChooser memakai jTableMouseClicked???saya bingung udah 1 minggu nyari jalan keluarnya belum ketemu…

  2. gan mo nanya,, Q pakek Jdatechoser dan yang saya bingungin nulis di grd_siswa-event-mousecliked grid gua semisal “txt_tgl.getDate” dia gag mau ta ganti txt_tgl.setDate juga gag bisa terus? solusi?