新的GUI Builder的最佳实践是什么,只需从"表格A"到另一个"表格B"单击"表单A"中的按钮,使用动作事件?
如果我在表格A中创建表格B,就像这样
public void oncreateAccountActionEvent(com.codename1.ui.events.ActionEvent ev) {
new FormB().show();
}
然后我显然无法在执行new FormB().show()
之前从主类(start,stop,destroy方法)中修改表单B.在这种情况下,new FormA().show();
位于主类的start方法中。
我希望能够指定例如表单B的后退按钮导航回表单A,但我想在Main类的start方法中添加它。
谢谢!
修改
我有Main-class(使用start(),stop(),destroy() - 方法),在这个类中我做new FormA().show()
。
但是在FormA的类中,我有oncreateAccountActionEvent
- 方法(和按钮),它按new FormB().show()
显示FormB。
但是我希望能够指定formB.setBackCommand()
(在主类中的FormB工具栏中。
所以说我想在主类中用new FormA/B()
指定两个表单 - 然后修改表单,比如在工具栏中添加按钮 - 然后告诉FormA FormB应该在action事件方法中使用。
答案 0 :(得分:3)
使用showBack()方法从FormB返回FormA,如下面的代码所示。您可以保留对上一个/下一个表单实例的引用。
FormA formA = new FormA();
FormB formB = new FormB();
public void oncreateAccountActionEvent(com.codename1.ui.events.ActionEvent ev) {
formB.show();
}
public void showFormA(){
formA.showBack();
}
答案 1 :(得分:0)
我通过简单地覆盖Main-class中的oncreateAccountActionEvent
- 方法来解决我的问题,并且仍能够在之前创建和修改formB:
Form formB= new FormB();
// Modifying formB
formB.setBackCommand(backCommand);
...
//Create formA and show the modified formB on button click
FormA formA= new FormA() {
@Override
public void oncreateAccountActionEvent(ActionEvent ev) {
//Navigate to FormB
formB.show();
};
};
为了从formB导航回formA,我找到了这个解决方案,通过实现formB类的show()
- 方法来保留对前一个表单的引用:
private Form previous;
...
public void show() {
previous = Display.getInstance().getCurrent();
super.show();
}
...
//go to the form before
public void goBack(){
previous.showBack();
}
也许这也有助于其他人。