仅在表行单击时触发鼠标事件

时间:2014-12-19 15:34:09

标签: javafx javafx-2 javafx-8

我有这个自定义JavaFX表工厂单元格:

Callback<TableColumn, TableCell> cellFactory = new Callback<TableColumn, TableCell>()
        {
            @Override
            public TableCell call(TableColumn p)
            {
                TableCell cell = new TableCell<TableDataObj, Object>()
                {
                    @Override
                    public void updateItem(Object item, boolean empty)
                    {
                        super.updateItem(item, empty);
                        setText(empty ? null : getString());
                        setGraphic(null);
                    }

                    private String getString()
                    {
                        return getItem() == null ? "" : getItem().toString();
                    }
                };

                cell.addEventFilter(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>()
                {
                    @Override
                    public void handle(MouseEvent event)
                    {
                        if (event.getClickCount() > 1)
                        {
                            EventsPanel ep = new EventsPanel();
                            TableDataObj person = (TableDataObj) table.getSelectionModel().getSelectedItem();
                            ep.GeneralConfiguration(person);
                        }
                    }
                });
                return cell;
            }

        };

我注意到当我用鼠标选择表格行时,我可以在每次点击表格时触发事件。我怎样才能修复代码,只有当我把表格行弄清楚时才能触发事件。

1 个答案:

答案 0 :(得分:0)

类似的东西:

class MyClass { 
  MyClass & foo() { return *this; }
}
你的听众应该工作。