Sto lavorando su un TableView (FXML) in cui desidero avere tutte le righe accompagnate da un pulsante di eliminazione nell'ultima colonna.FXML, JavaFX 8, TableView: crea un pulsante di eliminazione in ogni riga ed elimina la riga di conseguenza
Ecco un video che mostra quello che voglio dire: YouTube Delete Button in TableView
Ecco quello che ho nel mio principale classe controller:
public Button del() {
Button del = new Button();
del.setText("X");
del.setPrefWidth(30);
del.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
int i = index.get();
if(i > -1) {
goals.remove(i);
list.getSelectionModel().clearSelection();
}
}
});
return del;
}
private SimpleIntegerProperty index = new SimpleIntegerProperty();
@Override
public void initialize(URL location, ResourceBundle resources){
//DateFormat df = new SimpleDateFormat("dd MMM yyyy");
sdate.setValue(LocalDate.now());
edate.setValue(LocalDate.now());
seq.setCellValueFactory(new PropertyValueFactory<Goals, Integer>("id"));
gol.setCellValueFactory(new PropertyValueFactory<Goals, String>("goal"));
sdt.setCellValueFactory(new PropertyValueFactory<Goals, Date>("sdte"));
edt.setCellValueFactory(new PropertyValueFactory<Goals, Date>("edte"));
prog.setCellValueFactory(new PropertyValueFactory<Goals, Integer>("pb"));
del.setCellValueFactory(new PropertyValueFactory<Goals, Button>("x"));
list.setItems(goals);
list.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<Object>() {
@Override
public void changed(ObservableValue<?> observable,
Object oldValue, Object newValue) {
index.set(goals.indexOf(newValue));
System.out.println("Index is: "+goals.indexOf(newValue));
}
});
}
Ogni volta che avvia l'applicazione, cercherò di fare clic sul pulsante Elimina da righe casuali ma elimina sempre la prima riga. Immagino che il metodo addListener che uso per la lista non sia implementato correttamente e indexOf (newValue) sia sempre 0 ad ogni inizializzazione.
Tuttavia, funzionerà se faccio prima clic su una riga e poi sul pulsante Elimina. Ma questo non è quello che voglio. Voglio che gli utenti siano in grado di eliminare qualsiasi riga se premono il pulsante Elimina senza selezionare la riga.
Apprezzo il tuo aiuto ragazzi!
si prega di fornire uno SSCCE che illustra il problema – kleopatra