Я успешно использую следующую процедуру для получения изображений с работающим SmartGWT.
На том же уровне, что и пакет client
вашего модуля GWT, я создаю папку с именем public
. (В Eclipse вы не можете создать пакет с именем public
, поскольку это недопустимое имя пакета. Вы должны явно создать его как папку.) Этот каталог с именем public
обрабатывается GWT специально. Компилятор GWT копирует все включенное содержимое в результирующий каталог основного модуля. Поэтому я обычно создаю подкаталог images
в public
и помещаю туда все изображения, принадлежащие моему модулю GWT.
Например:
com/stuff
client
Main.java
...
public
images
a.png
b.png
mainmodule.gwt.xml
Затем в самом начале точки входа я говорю SmartGWT посмотреть на подкаталог images
для изображений (в данном примере это mainmodule
имя моего основного модуля GWT):
public void onModuleLoad() {
Page.setAppImgDir("[APP]/mainmodule/images/");
...
}
Часть пути [APP]
имеет специальный синтаксис SmartGWT.
Позже я могу создать IButton следующим образом:
final IButton aBtn = new IButton("A Button");
aBtn.setIcon("a.png");
Иногда необходимо создать URL-адрес изображения не для SmartGWT, а для простого GWT или простого HTML. Для этих случаев вы можете создать URL с
final String bUrl = GWT.getModuleBaseURL() + "images/b.png";