2014-09-23 3 views
2

Я работаю над установщиком, который будет развертывать пакет на удаленном компьютере. Для этого я должен задать пользователю имя пользователя удаленной машины.Задать начальное значение текстового поля на основе ввода из другого текстового поля

Я также хотел бы указать путь, по которому файл будет скопирован. Для этого у меня есть другое текстовое поле на той же странице с настраиваемой формой.

Есть ли способ получить автоматическое заполнение поля назначения на основе ввода в поле имени пользователя над ним?

Например, пользовательские типы user1 в поле имени пользователя, я бы хотел, чтобы поле назначения заполнило /home/user1/.

ответ

2

Установите свойство «выражение» проверки ввода текстового поля имени пользователя, чтобы

if (!text.equals(context.getVariable("lastValue"))) { 
    ((JTextField)formEnvironment.getFormComponentById("2060") 
     .getConfigurationObject()).setText(text); 
    context.setVariable("lastValue", text); 
} 
return true; 

, где «123» заменяется идентификатором текстового поля назначения. После того, как поле использует фокус, поле назначения обновляется.

В переменной установщика «lastValue» хранится предыдущее значение текстового поля имени пользователя, так что текстовое поле назначения изменяется только в том случае, если значение было изменено.

В качестве альтернативы: Чтобы обновить текстовое поле по мере ввода, задайте свойство «Key listener script» текстового поля имени пользователя указанному выше сценарию минус оператор return.

Это свойство будет доступно, начиная с install4j 6.0.4.

+0

Проведено еще несколько испытаний и выглядит как побочный эффект этого, что, несмотря на изменение пользователем поля назначения, значение переменной, назначенной этому полю, остается таким же, как и один, установленный с помощью выражения проверки ввода для пользователя имя поля. Есть ли какое-либо обходное решение, так что я могу установить по умолчанию с использованием проверки ввода, но все же разрешить пользователю вручную изменять поле назначения любым желаемым путем? –

+0

Вы правы, проверка ввода также выполняется, когда пользователь нажимает «Далее». Я обновил свой ответ с помощью решения. –

+0

@IngoKegel Я пробовал решение, и оно работает. Тем не менее, я получаю нежелательное поведение. Значение поля, ** обновленного **, по-видимому, является одним символом. Я знаю, что это поведение по умолчанию для события KeyDown, но я надеюсь, что любое значение введено, отражается в другом текстовом поле под ним. У вас есть решения? Правильно знаю, что я делаю два выражения проверки: один для проверки ключа и другой для проверки ввода. Конечный пользователь может запутаться. – user0000001

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