Pracuję nad TableView (FXML), w którym chcę mieć wszystkie wiersze z dołączonym przyciskiem usuwania w ostatniej kolumnie.FXML, JavaFX 8, TableView: Utwórz przycisk usuwania w każdym wierszu i usuń odpowiednio wiersz
Oto film, który pokazuje, co to znaczy: YouTube Delete Button in TableView
Oto co mam w głównej klasie kontrolera:
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));
}
});
}
każdym razem uruchomić aplikację, postaram kliknąć przycisk Usuń z losowych wierszy, ale zawsze usuwa pierwszy wiersz. Chyba metoda addListener, której używam do listy, nie jest poprawnie zaimplementowana, a indexOf (newValue) zawsze wynosi 0 przy każdej inicjalizacji.
Jednak będzie działać, jeśli najpierw kliknę wiersz, a następnie kliknę przycisk usuwania. Ale tego nie chcę. Chcę, aby użytkownicy mogli usunąć dowolny wiersz, jeśli naciśniemy przycisk usuwania bez wybierania wiersza.
Doceń pomoc dla facetów!
podaj SSCCE który demonstruje problem – kleopatra