7

在按钮的 actionListener 中,我们想动态创建一个表单。

例如类似的东西

Button b = new Button("Clickme");
b.setActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        Form f = new Form();
        Container c = new Container();
        ...
        f.addComponent(c);
        f.show();
    }
});

哪个工作正常.....但是“后退”按钮不起作用

有谁知道在 actionListener 中实现动态表单或通过 action Listener 跳转到预定义表单的正确方法?

谢谢

詹姆士

4

2 回答 2

4

您需要创建一个返回命令并将其与表单相关联:

Command back = new Command("Back") {
     public void actionPerformed(ActionEvent ev) {
         // notice that when showing a previous form it is best to use showBack() so the 
         // transition runs in reverse
         showPreviousForm();
     }
};
f.setBackCommand(back);

您可以在完全手工编码的厨房水槽演示中看到这一点。

于 2012-09-04T05:06:48.557 回答
0

您也可以将表单作为参数

chooseDB(c.getComponentForm());

private void chooseDB(final Form main) {
    Form f = new Form("Choose a Database");
    ...
    Command backCommand = new Command("Back") {
        public void actionPerformed(ActionEvent ev) {
            main.showBack();
        }};
    f.addCommand(backCommand);
    f.setBackCommand(backCommand);
    f.show();
}

所以对于你的例子:

Button b = new Button("Clickme");
b.setActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        Form f = new Form();
        Container c = new Container();
        Command backCommand = new Command("Settings") {
        public void actionPerformed(ActionEvent ev) {
            b.getComponentForm().showBack();
        }};
    f.addCommand(backCommand);
    f.setBackCommand(backCommand);
        f.addComponent(c);
        f.show();
    }
});

Shai,如果我做错了什么,请纠正这个。谢谢。

于 2013-02-25T01:18:42.293 回答