【发布时间】:2014-09-05 13:11:53
【问题描述】:
我想在 scout eclipse 中实现一些类似切换按钮的想法。 我需要的是更改状态按钮的图像。
我看到了功能
setIconId(String)
但我不知道如何找到这个函数的参数。如何找到球探用于不同状态按钮的图像?
马尔科
【问题讨论】:
标签: image button toggle eclipse-scout
我想在 scout eclipse 中实现一些类似切换按钮的想法。 我需要的是更改状态按钮的图像。
我看到了功能
setIconId(String)
但我不知道如何找到这个函数的参数。如何找到球探用于不同状态按钮的图像?
马尔科
【问题讨论】:
标签: image button toggle eclipse-scout
在您的 Scout 应用程序中,最好将 setIconId(..) 中定义的常量作为参数传递给 Icons 类。请参阅 wiki 上的 Icons page。
您的用例示例:
setIconId(Icons.WeatherSun)
在Demo Widget Application 中有一个Icons class:
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实现。 (根据 UI 技术,将使用适当的 IconLocator。例如,在 Swing 的情况下,SwingIconLocator 实现)。
如果是weather_sun,ImageLocator 的默认实现将在每个文件夹的\resources\icons\ 文件夹中查找名为weather_sun.<ext> 的文件(其中<ext> 可以是gif、png 等等)插件。在这种情况下,它将找到文件:\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 Editor。这个编辑器代表了Icons 类和相应的图标中定义的所有常量。如果找不到文件,则显示红色方块而不是图像。
Toggle Button 没有特定字段,使用AbstractButton 并将显示样式设置为DISPLAY_STYLE_TOGGLE。
另见:
我认为这段代码 sn-p 可以满足您的需求:
@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。
截图:
【讨论】: