如何在 JavaFX 8 中为 MenuItem 添加皮肤效果?
How to add skin effect to MenuItem in JavaFX 8?
我正在使用自定义 Button
class 来实现 Android Material 设计中看到的效果。我从 here 那里得到了这个。
我想实现相同的功能,但在 MenuBar
中使用 MenuItem
,但在 class 中我无法覆盖 createDefaultSkin()
。还有其他方法可以创建此动态背景吗?我已经搜索过,只找到了如何更改背景颜色或如何制作颜色的动画过渡,但没有什么比设置自定义形状更像 Circle
在这种情况下它是后者的动画。
MenuItems 不是控件,因此不能使用像 createDefaultSkin()
这样的控件架构方法对它们进行换肤 - 您已经发现了这一点。不过,您确实有一些选择。
JavaFX 提供 CustomMenuItem
class which provides a configurable node content property。因此,您可以通过创建 CustomMenuItem 实例来自定义菜单项。
标准菜单项也可以通过 setting a graphic 自定义。
菜单项也可以在没有 Java 代码的情况下通过操纵它们的 CSS 进行相当广泛的自定义,尽管在 [=37] 中无法实现动画效果=] material您所指的设计按钮。
MenuBars 是控件并且有一个皮肤实现,因此您可以为整个菜单栏提供您自己的皮肤实现(与您提供的 link 提供自定义皮肤实现的方式相同用于按钮)。自定义菜单栏皮肤然后负责呈现整个菜单的 GUI,并且可以使用您决定提供的任何实现来实现。
菜单栏是比按钮复杂得多的控件,因此提供自定义菜单栏外观是一项非常重要的任务。要了解内置的MenuBarSkin 实现,您可以search the JavaFX source repository for the MenuBarSkin class。内置菜单栏可以很复杂,因为它能够在 Mac 上使用系统菜单功能、弹出菜单、应用程序中基于场景图节点的菜单 window 等。内置-in 实现处理菜单栏本身的一些 UI 功能,在其他情况下委托从菜单项、各种 Java 帮助程序 类 和最终的底层 OS windowing 工具包支持菜单显示和管理。
我正在使用自定义 Button
class 来实现 Android Material 设计中看到的效果。我从 here 那里得到了这个。
我想实现相同的功能,但在 MenuBar
中使用 MenuItem
,但在 class 中我无法覆盖 createDefaultSkin()
。还有其他方法可以创建此动态背景吗?我已经搜索过,只找到了如何更改背景颜色或如何制作颜色的动画过渡,但没有什么比设置自定义形状更像 Circle
在这种情况下它是后者的动画。
MenuItems 不是控件,因此不能使用像 createDefaultSkin()
这样的控件架构方法对它们进行换肤 - 您已经发现了这一点。不过,您确实有一些选择。
JavaFX 提供
CustomMenuItem
class which provides a configurable node content property。因此,您可以通过创建 CustomMenuItem 实例来自定义菜单项。标准菜单项也可以通过 setting a graphic 自定义。
菜单项也可以在没有 Java 代码的情况下通过操纵它们的 CSS 进行相当广泛的自定义,尽管在 [=37] 中无法实现动画效果=] material您所指的设计按钮。
MenuBars 是控件并且有一个皮肤实现,因此您可以为整个菜单栏提供您自己的皮肤实现(与您提供的 link 提供自定义皮肤实现的方式相同用于按钮)。自定义菜单栏皮肤然后负责呈现整个菜单的 GUI,并且可以使用您决定提供的任何实现来实现。
菜单栏是比按钮复杂得多的控件,因此提供自定义菜单栏外观是一项非常重要的任务。要了解内置的MenuBarSkin 实现,您可以search the JavaFX source repository for the MenuBarSkin class。内置菜单栏可以很复杂,因为它能够在 Mac 上使用系统菜单功能、弹出菜单、应用程序中基于场景图节点的菜单 window 等。内置-in 实现处理菜单栏本身的一些 UI 功能,在其他情况下委托从菜单项、各种 Java 帮助程序 类 和最终的底层 OS windowing 工具包支持菜单显示和管理。