Мне нужна помощь в создании непрерывной формы с сеткой, например, в режиме ms. Первоначально gridpane имеет 1 ряд и 3 столбцаНепрерывная форма JavaFX динамически добавляет новую строку с содержимым в gridpane
| Choicebox | Кнопка «Удалить» | Кнопка добавления |
public class myGridpane {
@FXML
private GridPane gp_form;
private List<Car> myCars = new ArrayList();
public void initialize() {
myCars = loadCars();
initGridpane(myCars);
}
private initGridpane(List<Car> myCars) {
int rowIndex = 0;
for (Car myCar : myCars) {
Button b_newCar = new Button("+");
Button b_deleteCar = new Button("-");
ChoiceBox<Car> cb_car = new ChoiceBox<>();
cb_car.setItems(Car.getAllCarKeys());
cb_car.setValue(myCar.getModel());
b_deleteCar.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
// remove row
// remove car from List myCars
}
});
b_newCar.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
// add new row
}
});
cb_car.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
// update myList
}
});
gp_form.add(cb_car, 0, rowIndex);
gp_form.add(b_deleteCar, 1, rowIndex);
gp_form.add(b_newCar, 2, rowIndex);
rowIndex++;
}
}
}
Результат должен выглядеть следующим образом:
.
Как удалить строку и значение поля выбора из моего списка? И как мне обновить свой список, если изменяется выборка?
Что произойдет, если кнопка удаления нажата в третьей строке? Должны ли быть удалены все строки, содержащие в настоящее время «Автомобиль 1»? –
Если нажать кнопку удаления в строке 3, следует удалить только строку 3. кроме того, предметный автомобиль 1 должен быть удален в моем списке (автомобиль 1 в строках 1 и 3 имеет разные идентификаторы). – tonyh