java - install4j:更改标签颜色

标签 java bash install4j

我有三个运行可执行文件或批处理文件操作,它们调用我的启动脚本,分别尾部到日志文件中,并验证每个服务是否已完全启动。我本来会在 install4j 中使用 native 启动操作,但这些服务需要按顺序同步启动,并且每个服务最多需要 30 秒。

在每个操作之后,我都有一个 Run script 操作来验证返回代码并确定其余脚本是否也应该执行。在表单本身上,它显示了已安装的组件,我想在成功启动后添加一个图标并更改每个标签的颜色。

如果这让您感到困惑,请查看下面的屏幕截图以更好地理解。

screen shot install4j

一如既往,感谢您的支持。

克里斯

最佳答案

诀窍是如何从“运行脚本”操作中获取屏幕的表单环境。可以包含表单组件的屏幕是 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/

相关文章:

mysql - bash - SQL 查询输出到变量

install4j - 修复与 JRE bundle 外部引用相关的 Install4j 警告

java - 如何重写 boolean 值handleUnattended()

nsis - 根据我的要求,我应该使用 NSIS 还是 jprofiler/install4j

java - ArrayList<recipe> 到 JList

linux - 根据第一个文本文件的第一列合并两个未排序的文本文件并保留顺序

java - 线程在多核环境中是否更高效?

bash - 脚本检查我是否可以访问多个服务器

java - gwt 套接字连接

java - 按照文件夹中创建的顺序列出文件