Как я могу использовать спрайты изображений в GWT?

Другой вариант - использовать привязку. Если у вас есть объект, с которым вы используете привязку, чтобы получить текст каждого TreeViewItem (например), вы можете создать стиль, который также связывает свойство IsSelected:

<TreeView>
    <TreeView.Resources>
        <Style TargetType="TreeViewItem">
            <Setter Property="IsSelected"
                    Value="{Binding Path=IsSelected, Mode=TwoWay}" />
        </Style>
    </TreeView.Resources>
</TreeView>

Это предполагает, что связанный объект имеет свойство IsSelected типа bool. Затем вы можете выбрать TreeViewItem, установив IsSelected на true для своего соответствующего объекта.

Тот же подход может использоваться с свойством IsExpanded для управления при расширении TreeViewItem или рухнул.

23
задан Salvin Francis 26 December 2010 в 19:22
поделиться

4 ответа

Из того, что вы написали, я предполагаю, что MyResources - это интерфейс, расширяющий ClientBundle, а MyCssResources - интерфейс, расширяющий CssResource:

interface MyResources extends ClientBundle {
  @Source("myImage.png")
  @ImageOptions(repeatStyle = RepeatStyle.BOTH)
  ImageResource myImage();

  @Source("myCss.css")
  MyCssResource myCss();
}

interface MyCssResource extends CssResource {
  String myBackground();
}

Итак, теперь есть два способа использования ImageResource, полученный от MyResources. Во-первых, присоедините его к правилу CSS с помощью директивы @sprite. myCss.css:

@sprite .myBackground {
  gwt-image: "myImage";
  /* Additional CSS rules may be added. */
}

Тогда все, что связано с классом myBackground, будет иметь myImage в качестве фона. Так, используя UiBinder, например:

<ui:UiBinder> <!-- Preamble omitted for this example. -->
  <ui:with field="myResources" type="com.mycompany.MyResources"/>

  <g:FlowPanel styleName="{myResources.myCss.myBackground}"/>
</ui:UiBinder>

Можно также создавать экземпляры объектов Image напрямую, используя определенный ImageResource. UiBinder:

<ui:UiBinder> <!-- Preamble omitted for this example. -->
  <ui:with field="myResources" type="com.mycompany.MyResources"/>

  <g:Image resource="{myResources.myImage}"/>
</ui:UiBinder>

Без UiBinder:

MyResources myResources = GWT.create(MyResources.class);
Image myImage = new Image(myResources.myImage());
31
ответ дан Jason Terk 26 December 2010 в 19:22
поделиться

Я хотел бы добавить также

Не забудьте вызвать sureInjected () для MyCssResource.java или еще

<g:FlowPanel styleName="{myResources.myCss.myBackground}"/>

не будет работать.

4
ответ дан Alessandro Minoccheri 26 December 2010 в 19:22
поделиться

Если вы используете gss, @sprite в этом случае не работает. Вы должны использовать gwt-sprite как:

.myBackground {
  gwt-sprite: "myImage";
}
0
ответ дан tanghao 26 December 2010 в 19:22
поделиться

Просто позвольте мне добавить это:

@sprite .myBackground {
  gwt-image: "myImage";
  /* Additional CSS rules may be added. */
}

становится

.myBackground {
  backgroud-image: url(-url of the image-)
  width: *width of the image*
  height: *height of the image*
}

Не забудьте переопределить их, если вам это нужно: например, установить высоту и ширину в авто:

@sprite .myBackground {
  gwt-image: "myImage";
  height: auto;
  width: auto;
}

HTH, я изо всех сил пытался выяснить это;)

13
ответ дан Christian Achilli 26 December 2010 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: