如何获取超链接上的tableview项,请单击

时间:2018-09-04 17:08:38

标签: javafx tableview

我在javafx tableview中遇到以下问题,我的表视图已连接到某些模型,并且正常的CRUD操作没有问题,我还添加了一个未连接到ANY数据模型的列,它仅包含一个超链接哪个用户可以单击,然后弹出提示。

所有这些工作,不起作用的是,当我单击超链接时,我还希望传递行值,通常它的工作原理类似于

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<>());

1 个答案:

答案 0 :(得分:1)

可以通过包含TableRow的{​​{1}}访问行项目。

TableCell

还可以使用T item = getTableRow().getItem(); TableView.items中获得索引,该索引允许删除而无需先在列表中搜索项目。

TableCell.getIndex