0

我正在创建一个使用UiBinder的GWT应用程序,我遇到了一个奇怪的问题,即样式不适用于我的元素 - 直到我刷新浏览器,然后在一小部分中短暂应用样式页面刷新前的第二个。换句话说:

  1. 打开页面;没有使用我定义的样式。
  2. 点击刷新
  3. 在页面变为空白之前的几分之一秒内使用了样式
  4. 页面重新加载,没有样式

我将包括我的整个*ui.xml文件,因为它不是太大。

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">
    <ui:style>
        .idLabelStyle {
            font-weight: bold;
            text-align: center;
            width: 100px;
            border-style: solid;
            border-width: 1px;
            margin-right: 5px;
        }

        .nameLabelStyle {
            font-weight: bold;
            text-align: center;
            width: 500px;
            border-style: solid;
            border-width: 1px;
            margin-right: 5px;
        }

        .addressLabelStyle {
            font-weight: bold;
            text-align: center;
            width: 500px;
            border-style: solid;
            border-width: 1px;
        }
    </ui:style>
    <g:HTMLPanel>
        <g:HorizontalPanel>
            <g:Label addStyleNames="{style.idLabelStyle}">ID</g:Label>
            <g:Label addStyleNames="{style.nameLabelStyle}">Name</g:Label>
            <g:Label addStyleNames="{style.addressLabelStyle}">Address</g:Label>
        </g:HorizontalPanel>
    </g:HTMLPanel>
</ui:UiBinder> 

我真的希望我错过了一些简单的东西。

4

3 回答 3

0

幸运或不幸的是,我不再在我的应用程序中使用这个小部件;但是,我不想丢失代码,因为这个问题让我发疯了,我想知道我错过了什么。

不幸的是,在更改了我的代码,然后重新添加小部件进行测试后,我无法再重现该问题。

这可能是我将小部件添加到我的 UI 的方式;我不记得我最初是如何添加它的(之前更改太多),但我现在VerticalPanel通过使用add(Widget)方法将它添加到 a 中,并且现在应用样式没有问题。

感谢那些跟随我追逐野鹅的评论者。我希望我有一个更满意的答案...

于 2010-04-21T16:22:35.483 回答
0

而不是addStyleNames=使用setStyleName=,或者setStylePrimaryName=我过去曾遇到过这个问题,并在我的情况下解决了它。注意:两种可能性如下所示...

setStyleName
Clears all of the object's style names and sets it to the given style. You should normally use setStylePrimaryName(String) unless you wish to explicitly remove all existing styles.

setStylePrimaryName
Sets the object's primary style name and updates all dependent style names.
于 2010-04-21T15:02:40.400 回答
0

在 UiBinder 中使用基于单元的面板时;将子元素包装在标签中并单独设置它们的对齐方式和大小。

http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/ui/CellPanel.html

于 2010-11-17T12:47:31.907 回答