CodeNameOne动态创建表格,如何“回到”(CodeNameOne Dynamically c

2019-07-31 08:31发布

在一个按钮一个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实现动态表单,或跳跃通过预定义的形式和行动听众的正确方法?

谢谢

詹姆士

Answer 1:

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

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);

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



Answer 2:

你也可以给形式参数

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

夏嘉曦,请解决这个问题,如果我没有做错任何事。 谢谢。



文章来源: CodeNameOne Dynamically created Form, how to “Back”