0

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

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

    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());      
}
4

1 回答 1

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以接受文本字段或字符串。

于 2013-08-06T21:01:01.540 回答