我遇到了同样的问题,并及时使用解决了
EventDispatcher。
class TreeMouseEventDispatcher implements EventDispatcher { private final EventDispatcher originalDispatcher; public TreeMouseEventDispatcher(EventDispatcher originalDispatcher) { this.originalDispatcher = originalDispatcher; } @Override public Event dispatchEvent(Event event, EventDispatchChain tail) { if (event instanceof MouseEvent) {if (((MouseEvent) event).getButton() == MouseButton.PRIMARY && ((MouseEvent) event).getClickCount() >= 2) { if (!event.isConsumed()) { // Implement your double-click behavior here, even your // MouseEvent handlers will be ignored, i.e., the event consumed! } event.consume();} } return originalDispatcher.dispatchEvent(event, tail); }}然后将其
TreeMouseEventDispatcher用于
TreeCell:
treeView.setCellFactory(new Callback<TreeView<T>, TreeCell<T>>() { @Override public TreeCell<T> call(TreeView<T> param) { return new TreeCell<T>() { @Override protected void updateItem(T item, boolean empty) { if (item != null && !empty) { EventDispatcher originalDispatcher = getEventDispatcher(); setEventDispatcher(new TreeMouseEventDispatcher(originalDispatcher)); } } }; }}


