来自另一个功能的codenameone参考组件

时间:2013-08-06 15:32:45

标签: codenameone

我创建了一个注册表单(不使用设计器)。

在表单上,​​我创建了许多文本字段以及带有...的按钮

    Button btnRegister = new Button();
    btnRegister.setName("btnRegister");
    btnRegister.setText("Register");
    btnRegister.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent evt) {
            frmRegister_btnRegister(f);
        }
    });
    f.addComponent(btnRegister);    

我的问题是如何从按钮动作侦听器中引用正在调用的函数中的文本字段。具体来说,我正在尝试使用addArgument设置用于网络调用的参数。当我使用设计器时,我使用了find(ComponentName),但现在不再可用了。

private void frmRegister_btnRegister(Form f) {
    // register new user
    ConnectionRequest r = new ConnectionRequest(); 
    r.setUrl(sUrlWebSvc);
    r.setPost(true);

    r.addArgument("Rest", "1");          // restaurant code
    r.addArgument("Req", "Register");    // R = register


    //r.addArgument("first_name", findTxtUsertName(c).getText());

    // show spinning dialog while connecting
    InfiniteProgress prog = new InfiniteProgress();
    Dialog dlg = prog.showInifiniteBlocking();
    r.setDisposeOnCompletion(dlg);
    NetworkManager.getInstance().addToQueueAndWait(r);
    //System.out.println(r.getResponseData());      
}

1 个答案:

答案 0 :(得分:0)

假设它在这一行的上方定义:

Button btnRegister = new Button();

如:

TextField txt =....

只需将其更改为:

final TextField txt =....

然后你可以将它(或其getText()字符串值)传递给:

btnRegister.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        frmRegister_btnRegister(f, txt);
    }
});

当然,您需要更新frmRegister_btnRegister的签名才能接受文本字段或字符串。