我有三个Run executable or batch file
操作,分别调用启动脚本,分别拖入日志文件和验证每个服务是否已完全启动。我本可以在install4j中使用本机启动操作,但是这些服务需要按顺序启动-同步-每个服务最多需要30秒。
每个动作之后,我都有一个Run script
动作,该动作将验证返回码并确定是否还应执行其余脚本。在表单本身上,它显示了已安装的组件,我想在成功启动后添加一个图标并更改每个标签的颜色。
如果您对此感到困惑,请查看下面的屏幕截图,以更好地了解自己。
和往常一样,感谢您的支持。
克里斯
最佳答案
诀窍是如何从“运行脚本”操作获取屏幕的表单环境。可以包含表单组件的屏幕是com.install4j.api.screens.FormPanelContainer
的实例,并且该类提供对com.install4j.api.formcomponents.FormEnvironment
的访问。
在“运行脚本”操作中,您可以执行以下操作:
import java.awt.EventQueue;
import java.awt.Color;
EventQueue.invokeLater(new Runnable() {
public void run() {
FormEnvironment formEnvironment =
((FormPanelContainer)context.getScreenById("screenId")).getFormEnvironment();
JComponent label = (JComponent)formEnvironment.getFormComponentById("componentId").
getConfigurationObject();
label.setForeground(Color.MAGENTA);
}
});
return true;
使用“ screenId”和“ componentId”的适当值。
为了获得更可重用的解决方案,请添加
import java.awt.EventQueue;
import java.awt.Color;
public static void changeColor(final String screenId, final String componentId,
final Color color, final Context context)
{
EventQueue.invokeLater(new Runnable() {
public void run() {
FormEnvironment formEnvironment =
((FormPanelContainer)context.getScreenById(screenId)).getFormEnvironment();
JComponent label = (JComponent)formEnvironment.getFormComponentById(componentId).
getConfigurationObject();
label.setForeground(color);
}
});
}
到“安装程序->自定义代码和资源”步骤(install4j 6+)上的静态代码,然后调用
changeColor("screenId", "componentId", java.awt.Color.GREEN, context);
在“运行脚本”操作中。
为了设置图标,您必须在一个标签组件上定义“ Icon”属性,并使用“ Initialization script”属性将其保存在上下文中并从标签中删除:
context.setVariable("checkIcon", configurationObject.getIcon());
configurationObject.setIcon(null);
然后在上述代码段中调用
label.setForeground();
之后,您可以调用 label.setIcon((Icon)context.getVariable("checkIcon"));
关于java - install4j:更改标签颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31391194/