1
votes

I have code like this:

public void handle(MouseEvent event) {
        //if (event.getEventType() == MouseEvent.MOUSE_CLICKED) {
        if ( ( event.getEventType() == MouseEvent.MOUSE_PRESSED )&&
             (event.isPrimaryButtonDown()) ) {
                x1 = x2 = event.getX();
                y1 = y2 = event.getY();
                line = new BoundLine(pane, event, x1, y1,  x2, y2);
                pane.getChildren().add(line);                    
                //line.getEventDispatcher().dispatchEvent(event, null);
        }
   }

Is it possibile to propagate immediately the "MouseEvent event" to the javafx.scene.shape.Line (line in the code) object ? I have tried line.getEventDispatcher().dispatchEvent(event, null); but I've got this message error:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at testjavafxapplication.LinesEditCtx02$MouseHandler.handle(LinesEditCtx02.java:243) at testjavafxapplication.LinesEditCtx02$MouseHandler.handle(LinesEditCtx02.java:105) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:69) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170) at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35) at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92) at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53) at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33) at javafx.event.Event.fireEvent(Event.java:171) at javafx.scene.Scene$MouseHandler.process(Scene.java:3324) at javafx.scene.Scene$MouseHandler.process(Scene.java:3164) at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3119) at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1559) at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2261) at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:228) at com.sun.glass.ui.View.handleMouseEvent(View.java:528) at com.sun.glass.ui.View.notifyMouse(View.java:922) at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at com.sun.glass.ui.gtk.GtkApplication$3$1.run(GtkApplication.java:82) at java.lang.Thread.run(Thread.java:722)

1
My goal is to pass mouse event from parent (pane) to children (line) immediately after children is created. Example: 1) left mouse click anywhere on the chart 2) while keep pressed, from pane is create first point of a line 3) still pressed and drag a line is then created: this means that mouse event must be transferred from pane to line - famedoro

1 Answers

-1
votes

The EventDispatchChain (second argument) that is being sent to #dispatchEvent cannot be null. Unfortunately there are no public implementations, or they are in com.sun packages so you would need to implement your own EventDispatchChain.