Java 基于其他文本字段的输入填充文本字段初始值

Java 基于其他文本字段的输入填充文本字段初始值,java,install4j,Java,Install4j,我正在开发一个将包部署到远程机器的安装程序。为此,我必须向用户询问远程机器的用户名 我还想让用户指定文件复制到的路径。为此,我在同一个可配置表单页面上有另一个文本字段 有没有办法根据上面用户名字段中的输入自动完成目标字段 例如,假设用户名字段中的用户类型为user1,我希望目标字段填充为/home/user1/将用户名文本字段的“输入验证表达式”属性设置为 if (!text.equals(context.getVariable("lastValue"))) { ((JTextField

我正在开发一个将包部署到远程机器的安装程序。为此,我必须向用户询问远程机器的用户名

我还想让用户指定文件复制到的路径。为此,我在同一个可配置表单页面上有另一个文本字段

有没有办法根据上面用户名字段中的输入自动完成目标字段

例如,假设用户名字段中的用户类型为
user1
,我希望目标字段填充为
/home/user1/

将用户名文本字段的“输入验证表达式”属性设置为

if (!text.equals(context.getVariable("lastValue"))) {
    ((JTextField)formEnvironment.getFormComponentById("2060")
       .getConfigurationObject()).setText(text);
    context.setVariable("lastValue", text);
} 
return true;
其中“123”由目标文本字段的ID替换。字段使用焦点后,将更新目标字段

安装程序变量“lastValue”保存用户名文本字段的上一个值,因此只有当值发生更改时,才会更改目标文本字段

或者:要在键入时更新文本字段,请将用户名文本字段的“Key listener script”属性设置为上述脚本减去return语句


此属性将从install4j 6.0.4开始提供。

进行了更多的测试,其副作用似乎是,尽管用户更改了目标字段,分配给该字段的变量值仍然与通过用户名字段上的输入验证表达式设置的值相同。是否有任何解决方法,以便我可以使用输入验证设置默认值,但仍然允许用户手动修改目标字段,使用他想要的任何路径?没错,当用户单击“下一步”时,也会执行输入验证。我已经用一个解决方案更新了我的答案。@IngoKegel我已经尝试了这个解决方案,而且效果很好。然而,我得到了不想要的行为。正在更新的字段的值似乎落后一个字符。我知道这是KeyDown事件的默认行为,但我希望输入的任何值都能反映在它下面的另一个文本框中。你有什么解决办法吗?知道吗,我正在做两个验证表达式,一个用于键验证,另一个用于输入验证。最终用户可能会感到困惑。@Chris你说得对,因为“密钥验证表达式”滞后一个字符。我已经用该属性的脚本编辑了我的答案。@Chris Right,这永远不会像删除那样工作,因为用户可以选择一个范围,并且只报告插入索引。我为6.0.4添加了一个“Key listener script”属性,其中“text”参数已经包含修改过的文本。如果您想要该版本的预发布版本,请联系support@ej-科技网。