GWT菜单栏。资源。。。忽略?

GWT菜单栏。资源。。。忽略?,gwt,clientbundle,Gwt,Clientbundle,我正在创建一个菜单栏,当有子元素要显示时,我想让它显示一个小图标。我想我可以这样做到: interface ActionHeroResources extends ClientBundle, MenuBar.Resources { @Source("actionhero.css") public ActionHeroCSS css(); @Override @Source("agw-dropdown.png") ImageResource menuBar

我正在创建一个
菜单栏
,当有子元素要显示时,我想让它显示一个小图标。我想我可以这样做到:

interface ActionHeroResources extends ClientBundle, MenuBar.Resources
{
    @Source("actionhero.css")
    public ActionHeroCSS css();

    @Override
    @Source("agw-dropdown.png")
    ImageResource menuBarSubMenuIcon();
}

private static final ActionHeroResources RESOURCES = GWT.create(ActionHeroResources.class);

MenuBar actionMenu = new MenuBar(true, RESOURCES);

public ActionHero()
{
    actionMenu.addItem("Select", aSelectMenuFullOfOptions);
}
但是菜单上出现了“选择”一词,没有图标!我确信我的ImageResource工作正常,因为我稍后使用同一资源中的menuBarSubMenuIcon().getURL(),我的图像显示与您预期的一样。在GWT生成的HTML中,将菜单栏作为子项的项与包含命令的项之间绝对没有区别。我的CSS工作得很好


有什么想法吗?

尝试覆盖选定的.gwt菜单栏垂直子菜单图标的CSS样式,如下所示:

.gwt-MenuBar-vertical .subMenuIcon-selected {
    background: none;
}
.subMenuIcon > img {
    /* override gwt sub menu icon */
    width: 6px !important;
    height: 11px !important;
    background: url('your-image-relative-path.png') no-repeat 0px 0px !important;
}
我将其用于我自己选择的项目,效果非常好:

.gwt-MenuBar-vertical .subMenuIcon-selected {
    background: url(images/hand_pointer.png) no-repeat 0px 0px;
}

问题最终在于,构成子菜单的弹出面板从父菜单获取样式名,但附加了一个依赖的样式名。我不知道有什么方法可以预测依赖的样式名是什么,因为原始的样式名是模糊的。我通过使用更通用的.gwt菜单栏弹出式样式名解决了这个问题。这仅仅是因为我的程序中只有一种风格的弹出菜单——如果我想让两个弹出菜单看起来不一样,我不确定该怎么办


希望在以后的gwt版本中,菜单栏样式将更接近于传递给菜单栏的资源,并且较少使用依赖样式名称。

您只需为子菜单中显示的设置css规则,如下所示:

.gwt-MenuBar-vertical .subMenuIcon-selected {
    background: none;
}
.subMenuIcon > img {
    /* override gwt sub menu icon */
    width: 6px !important;
    height: 11px !important;
    background: url('your-image-relative-path.png') no-repeat 0px 0px !important;
}