Не получается удалить строку из таблицы delete(id) - id подчеркивает красным (… cannot be applied to (javafx.scene.control.TableColumn)
public class MainWindowController implements Initializable {
@FXML
private Button ok;
@FXML
private TabPane tabPane_selectMenu;
// выбор главного меню
@FXML
private Button button_goodsAll;
@FXML
private Button button_invoicesAll;
@FXML
private Button button_0All;
@FXML
private Button button_reportsAll;
// товары кнопки
@FXML
private Button button_open;
@FXML
private Button button_add;
@FXML
private Button button_del;
@FXML
private Button button_change;
@FXML
private Button button_print;
@FXML
private TableView<ProductEntity> tableView_tableAll ;
@FXML
private TableColumn<ProductEntity,Integer> id ;
@FXML
private TableColumn<ProductEntity, String> marking ;
@FXML
private TableColumn<ProductEntity,String> name ;
@FXML
private TableColumn<ProductEntity,String> unit ;
@FXML
private TableColumn<ProductEntity,Double> quantity ;
@FXML
private TableColumn<ProductEntity,String> type ;
@FXML
private TableColumn<ProductEntity,String> status ;
@FXML
private TableColumn<ProductEntity,String> place ;
@FXML
private TableColumn<ProductEntity,String> declaration ;
@FXML
private TableColumn<ProductEntity,Date> idata ;
ObservableList<ProductEntity> oblist= FXCollections.observableArrayList();
@Override
public void initialize(URL location, ResourceBundle resources) {
tabPane_selectMenu.setVisible(false);
button_add.setVisible(false);
button_open.setVisible(false);
button_del.setVisible(false);
button_change.setVisible(false);
button_print.setVisible(false);
// устанавливаем тип и значение которое должно хранится в колонке
id.setCellValueFactory(new PropertyValueFactory<ProductEntity,Integer>("id"));
marking.setCellValueFactory(new PropertyValueFactory<ProductEntity,String>("marking"));
name.setCellValueFactory(new PropertyValueFactory<ProductEntity,String>("name"));
unit.setCellValueFactory(new PropertyValueFactory<ProductEntity,String>("unit"));
quantity.setCellValueFactory(new PropertyValueFactory<ProductEntity,Double>("quantity"));
type.setCellValueFactory(new PropertyValueFactory<ProductEntity,String>("type"));
status.setCellValueFactory(new PropertyValueFactory<ProductEntity,String>("status"));
place.setCellValueFactory(new PropertyValueFactory<ProductEntity,String>("place"));
declaration.setCellValueFactory(new PropertyValueFactory<ProductEntity,String>("declaration"));
idata.setCellValueFactory(new PropertyValueFactory<ProductEntity,Date>("idata"));
// заполняем таблицу данными
tableView_tableAll.setItems(oblist);
getProductEntity();
}
public ObservableList<ProductEntity> getProductEntity() {
Session session = utils.HibernateSessionFactory.getSessionFactory().openSession();
List<ProductEntity> eList = session.createCriteria(ProductEntity.class).list();
for (ProductEntity ent : eList) {
oblist.add(ent);
}
return oblist;
}
// метод выбора склад меню. нажатие кнопок накладные, товары, отчеты
public void selectMenu(final ActionEvent event) {
//если нажата кнопка товары
if (event.getSource() == button_goodsAll){
tabPane_selectMenu.setVisible(true); // открываем таблицу товары
button_add.setVisible(true);
button_open.setVisible(true);
button_del.setVisible(true);
button_change.setVisible(true);
button_print.setVisible(true);
//кнопка добавить
button_add.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent mouseEvent) {
Stage stage = new Stage();
Parent root = null;
try {
root = FXMLLoader.load(getClass().getClassLoader().getResource("add_product.fxml"));
} catch (IOException e) {
e.printStackTrace();
}
stage.setTitle("Добавить товар");
stage.setResizable(false); //нельзя менять размеры окна
stage.setScene(new Scene(root));
stage.initModality(Modality.APPLICATION_MODAL);
stage.show();
}
});
//кнопка удалить
button_del.addEventHandler(MouseEvent.MOUSE_CLICKED, mouseEvent -> {
int selectedIndex = tableView_tableAll.getSelectionModel().getSelectedIndex();
if (selectedIndex >= 0) {
// tableView_tableAll.getItems().remove(selectedIndex);
delete(id);
} else {
// Ничего не выбрано.
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Ошибка");
alert.setHeaderText("Не выбрана строка для удаления");
alert.setContentText("Выберите строку в таблице");
alert.showAndWait();
}
});
}
}
private void delete(Integer id ) {
Session session = utils.HibernateSessionFactory.getSessionFactory().openSession();
session.beginTransaction();
ProductEntity productEntity =(ProductEntity) session.get(ProductEntity.class,id);
session.delete(productEntity);
session.getTransaction().commit();
session.close();
}
}
Метод:
private void delete(Integer id )...
принимает аргумент типа Integer
. Вы вызываете метод, указывая в качестве аргумента столбец таблицы:
private TableColumn<ProductEntity,Integer> id ;
...
delete(id);
Скорее всего вам поможет:
ProductEntity selectedItem = tableView_tableAll.getSelectionModel().getSelectedItem();
delete(selectedItem.getId());
или убрать удаление по идентификатору и сразу удалять через сущность (скорее всего данный вариант так же будет рабочим):
private void delete(ProductEntity entity)
...
ProductEntity selectedItem = tableView_tableAll.getSelectionModel().getSelectedItem();
delete(selectedItem);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В связи с чем она вылетает в данном случае и как можно её устранить?
Всем приветСделал аутентификацию как на этом видео https://www
Есть страница с формой, при нажатии на submit пересылает на странице handlerphp, но вместо того что бы что-то сделать пишет: