У меня есть следующая проблема в табличном представлении javafx, мое табличное представление связано с определенной моделью, и нормальные операции CRUD работают без проблем, я также добавил столбец, который не связан с ЛЮБОЙ моделью данных, и он просто содержит гиперссылку на какой пользователь может щелкнуть, и ему предлагается всплывающее окно.
Вся эта работа, что она не работает, когда я нажимаю на гиперссылку, я также хочу передать значение строки, и обычно это работает как
tableview.getSelectionModel().getSelectedItem();
Но теперь это не работает, так как я не щелкаю непосредственно по ячейке, а щелкаю по гиперссылке, и если я щелкаю сначала по какой-то строке, а затем по гиперссылке, я получаю выделенную строку. Можно ли выбрать строку при нажатии гиперссылки, поэтому мне не нужно сначала щелкать строку, а затем гиперссылку в той же строке.
public class RemoveCell<T> extends TableCell<T, Void> {
private final Hyperlink link;
private final Hyperlink link1;
private final HBox pane = new HBox();
public RemoveCell() {
link = new Hyperlink("Remove");
link1 = new Hyperlink("Edit");
pane.getChildren().addAll(link,link1);
link1.setOnAction(evt -> {
//lagerRet();
if(tableView.getSelectionModel().getSelectedItem()!=null) {
System.out.println("not null");
}
else {
System.out.println("null");
}
// remove row item from tableview
// ap.getChildren().removeAll();
//ap.getChildren().setAll(mcon.loadParent(FxmlView.CHART));
PopOver popsy = new PopOver();
try {
popsy.setContentNode(control.loadUni(FxmlView.POP));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//popsy.setContentNode(panemain);
popsy.headerAlwaysVisibleProperty().set(true);;
popsy.show(link);
});
link.setOnAction(evt -> {
// remove row item from tableview
System.out.println("a quick test");
});
}
@Override
protected void updateItem(Void item, boolean empty) {
super.updateItem(item, empty);
setGraphic(empty ? null : pane );
//setGraphic(empty ? null : link1 );
}
}
и, наконец, так я заполняю колонку
testColumn.setCellFactory(tc -> new RemoveCell<>());