我有三个运行可执行文件或批处理文件
操作,它们调用我的启动脚本,分别尾部到日志文件中,并验证每个服务是否已完全启动。我本来会在 install4j 中使用 native 启动操作,但这些服务需要按顺序同步启动,并且每个服务最多需要 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);
在“运行脚本”操作中。
<小时/>要设置图标,您必须在一个标签组件上定义“图标”属性,并使用“初始化脚本”属性将其保存在上下文中并将其从标签中删除:
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/