Изменить значок на кнопке в разведывательном затмении

Я хотел бы реализовать некоторые мысли, как кнопка переключения в затмении разведчика. Мне нужно изменить изображение кнопки для состояния.

я вижу функцию

setIconId(String)

но я не знаю, как найти параметр для этой функции. Как найти изображение, которое разведчик использует для другого состояния кнопки?

Марко


person Marko Zadravec    schedule 05.09.2014    source источник


Ответы (1)


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.

Снимок экрана:

Eclipse Scout – кнопка переключения со значком – Swing UI

person Jmini    schedule 08.09.2014
comment
Привет, я понял, как менять значки, но я до сих пор не знаю, как ты добился этого переключателя серого вида кнопки - person Marko Zadravec; 09.09.2014
comment
Я расширил свой ответ. Вы должны проверить вики или книгу скаутов. Кнопки Toogle объясняются. - person Jmini; 10.09.2014