2015-07-13 1 views
0

У меня есть три действия Run executable or batch file, которые запускают мои сценарии запуска, хвосты в файлы журнала соответственно и проверяют, что каждая служба полностью запущена. Я бы использовал собственное действие запуска в install4j, но эти службы должны запускаться по порядку - синхронно - и занимать до 30 секунд на услугу.install4j: Изменить цвет метки

После каждого действия у меня есть действие Run script, которое проверяет код возврата и определяет, должны ли выполняться остальные скрипты. В самой форме он показывает установленные компоненты, и я хотел бы добавить значок и изменить цвет каждой метки после ее успешного запуска.

Если это вас смутило, см. Снимок экрана ниже, чтобы лучше остановиться.

screen shot install4j

И, как всегда, спасибо за вашу поддержку.

Крис

+0

Интересный вопрос! –

ответ

1

Хитрость заключается в том, как получить вид среды экрана от «Запуск сценария» действия. Экран, который может содержать компоненты формы, представляет собой экземпляр 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); 
     } 
    }); 
} 

статическому код на "Installer-> Пользовательский код & ресурсов" шаг (install4j 6+) и вызовите

changeColor("screenId", "componentId", java.awt.Color.GREEN, context); 

в вашем " Запустить сценарий ".


Для установки значка, вы должны определить свойство «Icon» на один из компонентов этикетки и использовать свойство «Initialization сценарий», чтобы сохранить его в контексте и удалить его из метки:

context.setVariable("checkIcon", configurationObject.getIcon()); 
configurationObject.setIcon(null); 

Затем после вызова label.setForeground(); в указанных выше фрагментов кода, вы можете позвонить

label.setIcon((Icon)context.getVariable("checkIcon")); 
+0

Ingo, это сработало отлично! Надеюсь, это не слишком много, но возможно ли изменить икону? У меня есть значок загрузки рядом с каждой службой и хотел бы поменять его на галочку, если это возможно! Спасибо за вашу помощь :) – user0000001

+0

Нет проблем, см. Мое редактирование –

+0

Я опробовал реализацию значка и понял, что у меня будет 3 разных состояния, в которых будет работать служба: Запуск (загрузка значка), запуск (значок галочки) или не удалось (значок X). Скрывает ли сценарий видимости сценарий инициализации? Иногда не все 3 службы будут установлены, поэтому некоторые значки не будут присутствовать. Я предполагаю, что мне нужно будет создать 3 пустые метки, содержащие сценарий инициализации? – user0000001

 Смежные вопросы

  • Нет связанных вопросов^_^