CodeNameOne动态创建表单,如何“返回”

时间:2012-09-03 20:31:12

标签: java lwuit codenameone

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

例如

之类的东西
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中实现动态表单的正确方法,或通过动作侦听器跳转到预定义的表单?

由于

詹姆斯

2 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分: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,如果我做错了,请更正。 THX。