@Override protected void starting() { super.starting(); if (node.getParent() instanceof JFXRippler) { JFXRippler rippler = (JFXRippler) node.getParent(); BorderPane p = new BorderPane(node); p.setMaxWidth(((JFXHamburger) node).getWidth()); p.setMinWidth(((JFXHamburger) node).getWidth()); p.addEventHandler(MouseEvent.ANY, (event) -> { if (!event.isConsumed()) { event.consume(); node.fireEvent(event); } }); rippler.setControl(p); } if (this.getRate() == -1) { ((JFXHamburger) node).getChildren().get(1).setVisible(true); } }
public class EventThreadsTest { public static void main(String[] args) { Thread t = Thread.currentThread(); EventHandler handler = (evt) -> { System.out.println("Application thread: " + Platform.isFxApplicationThread()); System.out.println("main thread: " + Thread.currentThread() == t); }; Node target = new Pane(); target.setOnMouseClicked(handler); target.fireEvent(new MouseEvent(MouseEvent.MOUSE_CLICKED, 0, 0, 0, 0, MouseButton.PRIMARY, 1, true, true, true, true, true, true, true, true, true, true, null)); } }
/** * Push scroll events received by cell nodes directly to * the 'owner' Node. (Generally likely to be a VirtualFlow * but not required.) * * Normal bubbling of scroll events gets interrupted during * a scroll gesture when the Cell's Node receiving the event * has moved out of the viewport and is thus removed from * the Navigator's children list. This breaks expected trackpad * scrolling behaviour, at least on macOS. * * So here we take over event-bubbling duties for ScrollEvent * and push them ourselves directly to the given owner. */ private void pushScrollEvent(ScrollEvent se) { owner.fireEvent(se); se.consume(); }
private void clickOnMe(ObservableList<Node> nodes){ for(Node n : nodes){ n.fireEvent(new MouseEvent(MouseEvent.MOUSE_CLICKED, n.getLayoutX(), n.getLayoutY(), n.getLayoutX(), n.getLayoutY(), MouseButton.PRIMARY, 1, true, true, true, true, true, true, true, true, true, true, null)); } }
@Override protected void starting() { super.starting(); if (node.getParent() instanceof JFXRippler) { JFXRippler rippler = (JFXRippler) node.getParent(); BorderPane p = new BorderPane(node); p.setMaxWidth(((JFXHamburger) node).getWidth()); p.setMinWidth(((JFXHamburger) node).getWidth()); p.addEventHandler(MouseEvent.ANY, (event) -> { if (!event.isConsumed()) { event.consume(); node.fireEvent(event); } }); rippler.setControl(p); } if (this.getRate() == -1) { ((JFXHamburger) node).getChildren().get(1).setVisible(true); } }