Javafx tableview columview with button我需要点击按钮自动选择行

时间:2017-03-24 23:14:06

标签: javafx tableview mouseevent

我需要点击列中已有的按钮,以自动选择要获取的行并设置所选项目。否则,生成nullpointer。我想添加一个监听器,当我点击按钮时直接选择行,但我不知道。

ScreenShot:

enter image description here

这是代码:

botonVisitar.setOnAction((ActionEvent event) -> {

    TextInputDialog dialog1 = new TextInputDialog();
    Stage stage1 = (Stage) dialog1.getDialogPane().getScene().getWindow();
    stage1.getIcons().add(new Image(this.getClass().getResource("icono.jpg").toString()));
    dialog1.setTitle("Visita:");
    dialog1.setContentText("Ingresar Tipo de visita: (por ejemplo: llamada, mail, mensaje, etc)");
    Optional<String> result1 = dialog1.showAndWait();
    if (result1.isPresent()) {

        TablaVisita.getSelectionModel().getSelectedItem().setTipoVisita(result1.get());
        TablaVisita.getSelectionModel().getSelectedItem().setFechaVisita(LocalDate.now());

        //If it is not selected i get nullPointer. 
    }

1 个答案:

答案 0 :(得分:0)

我假设您在使用TableCell的自定义cellFactory中执行此操作,这意味着您可以使用TableRow获取表项:

new TableCell<MyItem, Void>() {
    private final Button botonVisitar = new Button("Visitar");

    {
        botonVisitar.setOnAction((ActionEvent event) -> {

            ...

            if (result1.isPresent()) {
                MyItem item = (MyItem) getTableRow().getItem();

                item.setTipoVisita(result1.get());
                item.setFechaVisita(LocalDate.now());
            }
        });

    }

    @Override
    public void updateItem(Void item, boolean empty) {
        super.updateItem(item, empty);
        setGraphic(empty ? null : botonVisitar);
    }
}