Это на самом деле не ответ, а скорее указатели на то, что вы можете попробовать или исследовать дальше.
Вы можете взглянуть на реализацию Tooltip
Скин и Поведение , чтобы увидеть, как оно обрабатывает некоторые из этих случаев.
Самый простой способ реализовать собственное всплывающее окно - просто использовать подсказку, стилизовать ее так, как вам нужно , используя css ииспользуйте метод setGraphic всплывающей подсказки , чтобы добавить любой пользовательский контент Node, который вы хотите.
Если вы предпочитаете использовать собственную реализацию, я думаю, вам нужно отслеживать, отображалось ли всплывающее окно илинет, поэтому вы не пытаетесь показать его, если он уже отображается и т. д. Вам также может понадобиться вызвать скрытие всплывающего окна, установив обработчик выхода мыши в самом всплывающем окне.Вы также можете захотеть отключить функцию щелчка для всплывающего окна, реализовав обработчик щелчка мыши во всплывающем окне.Вам также следует подумать о том, следует ли вам использовать прямой подкласс Popup или PopupControl , хотя использование Popup, как и у вас, вероятно, более просто.