I was able to find the phantom Tooltip object
Here is what I normally see in the Object Browser when testing the JavaFX GUI.

The JavaFXObject(“Stage”, “JDMS”) contain the buttons, panes, etc. The problem with Tooltips is that they come and go quickly. The Object Browser will not usually show them.
I was lucky enough to see a flicker in the Object Browser. The flicker was the appearance and disappearance of this.
JavaFXObject("Tooltip", "")
This flicker seemed to occur directly under the Process(“java”) and not within the branch that contains the buttons, panels, panes, etc. So, I went looking there.
I wrote a script to look for the creation of the tooltip while I moved the mouse around on the tested application. Initially, I just looked for a of Sys.Process(“java”) child that contained “tooltip” in the full name. Once, I captured that object I was able to determine the exact full name that I sought to find. There was a trick in that as well. By looking at the Java code for javafx.scene.control.Tooltip, I was able to identify the getText() method for the class (because I couldn’t see the object in the object browser I was unable to see which methods of the object that TestComplete would support). Anyway, the getText() method returned the displayed text, not default text associated with the tooltip field for the button (over which the mouse hover occurs).
Here is the script.
Sub FindTooltipObject
dim Timer1
dim i
dim iChildren
dim tooltipObj
dim tooltipObjFullName
dim bFlag
bFlag = false
'tooltipObj full name = Sys.Process("java").JavaFXObject("Tooltip", "")
'build strings with Ascii character for quotes
tooltipObjFullName = "Sys.Process(" + chr(34) + "java" + chr(34) + ").JavaFXObject(" + chr(34) + _
"Tooltip" + chr(34) + ", " + chr(34) + chr(34) + ")"
Timer1 = Time
Set javaObj = Sys.Process("java")
javaObj.Refresh
'Run do loop and look for conditions that indicate a tooltip is present
'normally Sys.Process("java") will have 11 children --
'When a tooltip appears, it bumps the total to twelve -- look for the tooltipObj only when
' the javaObj has greater than 11 children
'looking for the tooltip by object when it doesn't occur will slow code execution and
'possibly allow the tooltip to disappear.
do
'remember to force refresh to have the javaObj current and containing the tooltip
'object in a child
javaObj.Refresh
if cint(javaObj.ChildCount) > 11 then
for i = 0 to javaObj.ChildCount - 1
'Log.Message javaObj.Child(i).FullName
'comparison by full name without InStr function should be faster
if tooltipObjFullName = javaObj.Child(i).FullName then
'if InStr(javaObj.Child(i).FullName, "Tooltip") <> 0 then
set tooltipObj = javaObj.Child(i)
log.Picture tooltipObj, "Captured tooltip image."
'Log.Message "Tooltip JavaFXObject full name: " + tooltipObj.FullName
'check javafx code for javafx.scene.control.Tooltip for available methods
'because the TestComplete doesn't map this object and finding it and its methods in the object browser will
'be extremely difficult - still getText method works.
log.Checkpoint "Displayed tooltip text: " + tooltipObj.GetText()
bFlag = true
exit do
end if
Next
else
'log.message "nothing to report"
end if
Loop Until ((Time - Timer1)*20000) > 2
if Not(bFlag) then
log.Warning "Fail. No tooltip displayed."
end if
End sub