Event Handler ketika suatu Baris dihapus dari Tampilan Tabel

saya perlu tahu cara menangkap peristiwa yang terjadi ketika sebuah baris dihapus dari TableView dan indeks baris tersebut. Pada saat ini ketika sebuah baris dihapus dari Tampilan Tabel, metode TableView.getSelectionModel().clearSelection() dipanggil. Tetapi yang saya inginkan adalah memilih indeks terakhir yang tersedia di Tampilan Tabel.

Tableview.getSelectionModel().clearAndSelect() bukanlah suatu opsi, karena terkadang sebuah baris dihapus secara otomatis.

Salam


person Pavel Delgado    schedule 19.04.2016    source sumber


Jawaban (1)


Untuk tabel dengan tipe, misalnya Person:

import javafx.collections.ListChangeListener.Change ;

// ....

TableView<Person> table = ... ;

table.getItems().addListener((Change<? extends Person> c) -> {
    while(c.next()) {
        if (c.wasRemoved()) {
            int numRemoved = c.getRemoved().size();
            int index = c.getFrom();
            System.out.println(numRemoved + " items removed from table at index "+index);
        }
    }
});

ListChangeListener.Change dokumentasi menjelaskan nilai yang dikembalikan oleh c.getFrom(), c.getTo(), c.wasRemoved(), c.getAdded(), dll. dalam berbagai skenario.

person James_D    schedule 19.04.2016
comment
Ini berfungsi tetapi ekspresi yang benar adalah table.getItems().addListener((ListChangeListener.Change‹? extends Person› c) -› {}); silakan edit. Salam. - person Pavel Delgado; 20.04.2016
comment
Oke, saya mengerti. Terima kasih !! - person Pavel Delgado; 20.04.2016