【发布时间】:2018-06-18 02:39:59
【问题描述】:
我在每个表单中都使用 addSideMenu(this) 来添加侧边菜单。菜单项在 ENUM MenuOptions 中定义。就我而言,我想在从每个表单调用另一个表单之前对控件进行一些处理。如果这是通过表单上的任何按钮或控件发生的,那么我可以进行处理,然后调用下一个表单。
当从侧边菜单调用表单时,我在做同样的事情时遇到了困难。我必须根据表单中存在的元素进行处理,并且每个表单都有不同的元素。这不能是通用方法。如果从侧面菜单调用另一个表单,我不明白我怎么能做同样的事情。请指教。
示例:我在表单“开始”(第一个表单)上,它有按钮“A”和按钮“B”。我从侧面菜单调用表单“设置”->然后我想在控制移动到设置表单之前访问表单“开始”(第一个表单)的按钮 A 和 B。
侧边菜单代码:
public static void addSideMenu(Form f) {
Toolbar tb = f.getToolbar();
Button logout = new Button("Sign Out");
logout.setUIID("SignoutButton");
for (MenuOptions m : Server.instance.getMenuSortOrder()) {
m.addToSidemenu(tb);
}
tb.addComponentToSideMenu(logout);
}
侧边菜单选项代码:
public enum MenuOptions {
SCHEDULE("Sch", "Schedule", FontImage.MATERIAL_PERM_CONTACT_CALENDAR,
e -> new AppointmentsForm(false, true, true,
Server.AppointmentFolders.APPOINTMENTS).show()),
ACTIVITY("Start", "Activity", FontImage.MATERIAL_ASSIGNMENT,
e -> new ActivityForm("").show()),
SETTINGS("Settings", "Settings", FontImage.MATERIAL_SETTINGS,
e -> new SettingsForm().show());
}
MenuOptions(String name, String title, char icon,
ActionListener<ActionEvent> al) {
this.name = name;
this.title = title;
this.icon = icon;
this.al = al;
}
public Component createMenuButton() {
Button b = new Button(title);
if (Display.getInstance().isTablet()) {
FontImage.setMaterialIcon(b, icon, 20);
} else {
FontImage.setMaterialIcon(b, icon, 10);
}
Font mediumBoldProportionalFont =
Font.createSystemFont(Font.FACE_PROPORTIONAL, Font.STYLE_BOLD,
Font.SIZE_MEDIUM);
b.getUnselectedStyle().setFont(mediumBoldProportionalFont);
b.getAllStyles().setBorder(Border.createEtchedRaised());
b.addActionListener(al);
return b;
}
【问题讨论】:
标签: codenameone