检测激活了哪个UI编辑文本

问题描述

我正在使用Peter Kahrel的指南来动态创建用户界面,我想用键盘输入内容填充所选的Edittext。由于所有编辑文本都是动态创建的,因此如何检查选择了哪一个?我的函数在第一个字段上运行正常,但在下一个字段上运行不正常


var win = new Window ("dialog");
var maingroup = win.add ("panel {orientation: 'column'}");
add_row (maingroup);
var show_btn = win.add ("button",undefined,"Save presets");
show_btn.onClick = function () {
var txt = "";
for (var n = 0; n < maingroup.children.length; n++) {
 txt += maingroup.children[n].edit.text + "\n";
}
alert ("Rows: \n" + txt);
}
win.show ();
function add_row (maingroup) {
var group = maingroup.add ("group");
group.statictext = group.add ("statictext","Left-click  +");
group.edit = group.add ("edittext",["","",200,20],"Click here and press any key");
group.plus = group.add ("button","+");
group.plus.onClick = add_btn;
group.minus = group.add ("button","-");
group.minus.onClick = minus_btn;
group.index = maingroup.children.length - 1;
    group.edit.onActivate = function(){
    win.addEventListener ("keydown",function (kd) {pressed (kd)});
    function pressed (k) {
    if(k.keyName === "Enter"){
    group.edit.text = "Enter";
            }
        }
    }
win.layout.layout (true);
}
function add_btn () {
add_row (maingroup);
}
function minus_btn () {
maingroup.remove (this.parent);
win.layout.layout (true);
}

解决方法

如果您将事件侦听器添加到组而不是整个应用程序,则应该可以正常工作。

即。

win.addEventListener(“ keydown”,function(kd){pressed(kd)});

被替换为

group.addEventListener(“ keydown”,function(kd){pressed(kd)});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...