setIconId(..) и значки
В приложении Scout рекомендуется передавать в качестве аргумента из setIconId(..)
константу, определенную в классе Icons
. См. страницу значков на вики.
Пример для вашего варианта использования:
setIconId(Icons.WeatherSun)
В демонстрационном виджете есть Класс значков:
org.eclipsescout.demo.widgets.shared.Icons
Вот некоторые константы, определенные в этом классе:
public static final String WeatherRain = "weather_rain";
public static final String WeatherSnow = "weather_snow";
public static final String WeatherSun = "weather_sun";
Значения, определенные в константах, представляют собой идентификатор изображения.
Поиск изображения осуществляется с помощью ImageLocator. (В зависимости от технологии пользовательского интерфейса будет использоваться соответствующий IconLocator. Например, в случае Swing реализация SwingIconLocator
).
В случае weather_sun
реализация ImageLocator по умолчанию будет искать файл с именем weather_sun.<ext>
(где <ext>
может быть gif
, png
и т. д.) в папке \resources\icons\
каждого плагина. В этом случае он найдет файл: \org.eclipsescout.demo.widgets.client\resources\icons\weather_sun.png
Если изображение не найдено, вы увидите запись в журнале, подобную этой:
!MESSAGE org.eclipse.scout.rt.ui.swing.SwingIconLocator.warnImageNotFound(SwingIconLocator.java:141) could not find image 'weather_sun'
В Scout SDK есть редактор значков. Этот редактор представляет все константы, определенные в классе Icons
, и соответствующий значок. Если файл не найден, вместо изображения отображается красный квадрат.
Кнопка-переключатель
Для кнопки переключения нет специального поля, используйте AbstractButton
и установите стиль отображения на DISPLAY_STYLE_TOGGLE
.
Смотрите также:
Изменение значка в кнопке Toogle
Я думаю, что этот фрагмент кода делает то, что вы ищете:
@Order(10)
public class ToggleButton1 extends AbstractButton {
@Override
protected boolean getConfiguredProcessButton() {
return false;
}
@Override
protected void execClickAction() throws ProcessingException {
if (isSelected()) {
setIconId(Icons.WeatherSun);
}
else {
setIconId(Icons.WeatherRain);
}
}
}
Также можно было бы (и даже лучше) использовать execToggleAction
вместо execClickAction
.
Снимок экрана:
person
Jmini
schedule
08.09.2014