Я пытаюсь иметь JavaFX Pane
(VBox
в моем случае, но я не думаю, что это имеет значение), у которого есть ContextMenu
, который ведет себя правильно.Контекстное меню на панели, которая правильно исчезает
Я нашел эти два вопроса: why Pane
s can't have ContextMenu
s и How to create ContextMenu
within a Pane
.
Проблема, с которой я сталкиваюсь с этими двумя решениями (которые очень похожи) заключается в том, что, хотя контекстное меню правильно исчезает, если я нажимаю на панель, оно не исчезает, если я нажимаю внутри элемента управления внутри этой панели. Самый простой способ заметить этот недостаток - создать такую панель с помощью TextField
. Щелкните правой кнопкой мыши на панели, чтобы отобразить контекстное меню, затем нажмите внутри, чтобы сосредоточиться на TextField
. В то время как правильное контекстное меню исчезло в этот момент, это контекстное меню «взломанное» (из-за отсутствия лучшего термина) с радостью остается на своем месте, возможно, блокируя представление пользователя в текстовом поле, которое они пытаются заполнить.
Теперь я знаю, что могу добавить слушателя изменений в свойство focused
каждого элемента управления на моей панели, но это кажется излишним. Есть ли лучший способ убедиться, что контекстное меню скрыто при выборе элемента управления в моей панели (или, точнее, когда пользователь нажимает мышью в любом месте в окне владения за пределами контекстного меню)?
То, что я пытался до сих пор и не работает -
- Добавление изменения слушателя
focused
собственности на панели в - появляется это панель не считается сосредоточены, если один из его детей является - Добавление прослушиватель изменений в свойство контекстного меню
focused
- кажется, что фокус контекстного меню не изменяется при нажатии за его пределами.