Для начала классические настольные меню на самом деле не предназначены для использования в мобильных приложениях.
Вы должны рассмотреть различные подходы, такие как NavigationDrawer
( javadoc ) или BottomNavigation
элемент управления ( javadoc ).
В любом случае, если вам действительно нужно их использовать, вот объяснение проблемы, с которой вы столкнулись:
В Scene Builder, когда вы добавляете MenuBar
, он по умолчанию включает некоторые элементы управления Menu
и MenuItem
,Если вы включите тему Gluon Mobile:
, вы заметите, что отступ для Menu
минимален, тогда как MenuItem
имеет больший отступ и минимальную высоту иширина была установлена.
Если вы добавите Menu
в качестве дочернего элемента другого Menu
, если это меню не выбрано или не сфокусировано, оно будет стилизовано как MenuItem
, но если вы сфокусируете его,он будет стилизован как Menu
, вызывая ретрансляцию.
Например, на этой картинке Edit
вверху - меню выбора, а Edit
внизу не выбрано.
Сразу послемакет, если курсор мыши был достаточно близок к следующему элементу, возможно, что сейчас его выбирают, что позволит его развернуть.В то же время прежнее выбранное меню будет отменено, и оно снова будет расти ...
Вот простой способ решения проблемы: в вашем CSS-файле для представления добавьте что-то вроде:
.menu,
.menu:focused,
.menu-item {
-fx-padding: 10;
}
, поэтому и меню, и пункты меню имеют одинаковое заполнение во всех случаях, предотвращая любое возможное мерцание.
Обратите внимание, что с помощью css вы можете переопределить любой предыдущийсуществующего стиля и измените его по своему вкусу.