gwt如何使用setStyleName(String style,boolean add) - 用于gwt标准小部件

时间:2012-07-06 12:43:06

标签: css gwt uibinder

我想在GWT MenuBar中设置/标记一个MenuItem。所以我有一些逻辑,为菜单项添加一个样式名称(逻辑工作正常)。

mItem.setStyleName("menuItemMarked", true);

使用此set getStyleName按预期产生“gwt-MenuItem menuItemMarked”。

但是如何在css中使用/应用这种风格(目前我把css放在uibinder.xml中)? (你可能看到我不是css专家)

更新:我尝试的是that

.menuItemMarked{background-color: yellow}

这不起作用。如果我称之为“检查元素”(chrome)我可以看到“class =”gwt-MenuItem menuItemMarked“但我在找到的样式列表中找不到样式”menuItemMarked“?!

2 个答案:

答案 0 :(得分:4)

您在哪里指定CSS?

如果您的代码位于代码包中,则可能会被GWT编译器混淆。这适用于<ui:style>文件中的.ui.xml块和ClientBundles中包含的.css个文件。

在这种情况下,您需要从GWT文档中查看Programmatic Access to Inline Styles。这样您就可以将代码更改为:

mItem.setStyleName(style.menuItemMarked(), true);

或者,您可以告诉GWT不要混淆某些CSS类。 Here is a detailed answer to a similar question


最后,如果GWT没有触及您的CSS文件(它是从您的服务器提供的,就像其他文件一样),那么您需要确保您的文件正确地包含在您的页面中。您的浏览器的开发工具应该能够提供帮助。

答案 1 :(得分:2)

确保在css中指定正确的选择器名称。在这种情况下,您需要具备以下条件:

.gwt-MenuItem.menuItemMarked {
    background-color: yellow;
}

由于gwt-MenuItem仍然是列表中的第一个类名,因此它优先于后续类中定义的任何样式(包括background-color)。否定这一点的唯一方法是使用上面更具体的选择器定义样式。请查看this link以获取更详细的说明。