I have made a small test app to demonstrate my problem, the layout contains 3 labels like this:
A DragDetected event is registered with Label1 by using JavaObject
In the DragDetected event the startFullDrag methode on Label1 is run by using JavaObject
MouseDragEntered and MouseDragExited events is registered with Label2 and Label3
In the MouseDragEntered and -Exited events the MouseCursor property is set to CROSSHAIR and DEFAULT, respectively
My problem is that the mouse cursor never changes to crosshair. What am I doing wrong?
The test app is attached to the project
The full code is following:
A DragDetected event is registered with Label1 by using JavaObject
In the DragDetected event the startFullDrag methode on Label1 is run by using JavaObject
MouseDragEntered and MouseDragExited events is registered with Label2 and Label3
In the MouseDragEntered and -Exited events the MouseCursor property is set to CROSSHAIR and DEFAULT, respectively
My problem is that the mouse cursor never changes to crosshair. What am I doing wrong?
The test app is attached to the project
The full code is following:
B4X:
#Region Project Attributes
#MainFormWidth: 600
#MainFormHeight: 600
#End Region
Sub Process_Globals
Private fx As JFX
Private MainForm As Form
Private Label1 As Label
Private Label2 As Label
Private Label3 As Label
End Sub
Sub AppStart (Form1 As Form, Args() As String)
MainForm = Form1
MainForm.RootPane.LoadLayout("Layout1") 'Load the layout file.
MainForm.Show
Dim Event As Object = AsJavaObject(Label1).CreateEvent("javafx.event.EventHandler","DragDetected",Null)
AsJavaObject(Label1).RunMethod("setOnDragDetected",Array(Event))
Event = AsJavaObject(Label2).CreateEvent("javafx.event.EventHandler","MouseDragEntered",Null)
AsJavaObject(Label2).RunMethod("setOnMouseDragEntered",Array(Event))
Event = AsJavaObject(Label2).CreateEvent("javafx.event.EventHandler","MouseDragExited",Null)
AsJavaObject(Label2).RunMethod("setOnMouseDragExited",Array(Event))
Event = AsJavaObject(Label3).CreateEvent("javafx.event.EventHandler","MouseDragEntered",Null)
AsJavaObject(Label3).RunMethod("setOnMouseDragEntered",Array(Event))
Event = AsJavaObject(Label3).CreateEvent("javafx.event.EventHandler","MouseDragExited",Null)
AsJavaObject(Label3).RunMethod("setOnMouseDragExited",Array(Event))
End Sub
'Return true to allow the default exceptions handler to handle the uncaught exception.
Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
Return True
End Sub
Sub DragDetected_Event(MethodName As String,Args() As Object)
Dim lLabel As Label = Sender
AsJavaObject(lLabel).RunMethod("startFullDrag",Null)
End Sub
Sub MouseDragEntered_Event(MethodName As String,Args() As Object)
Dim lLabel As Label = Sender
lLabel.MouseCursor = fx.Cursors.CROSSHAIR
End Sub
Sub MouseDragExited_Event(MethodName As String,Args() As Object)
Dim lLabel As Label = Sender
lLabel.MouseCursor = fx.Cursors.DEFAULT
End Sub
Private Sub AsJavaObject(JO As JavaObject) As JavaObject
Return JO
End Sub