【发布时间】:2018-12-16 20:06:19
【问题描述】:
我正在新 GUI 构建器中的表单之间导航。默认情况下,旧版本在每个表单上都有一个back 按钮。
每次在新表单中导航时,如何在每个表单中启用新 gui 构建器上的 back 按钮?通过theme.res中的常量进行了尝试。默认还是没有开启。
此外,“new form1.show”方法是在表单之间导航的最佳方式吗? (见代码)
假设名称文件:
Main.java, myapplication.java, Form1 ,Form2 ,Form3
导航代码,假设名称为button1 和Form3:
public void onbutton1ActionEvent(com.codename1.ui.events.ActionEvent ev) {
new Form3().show();
}
Back 来自旧 gui builder 的命令,在这里不起作用:
public Form showForm(String resourceName, Command sourceCommand) {
try {
Form f = (Form)formNameToClassHashMap.get(resourceName).newInstance();
Form current = Display.getInstance().getCurrent();
if(current != null && isBackCommandEnabled() && allowBackTo(resourceName)) {
f.putClientProperty("previousForm", current);
setBackCommand(f, new Command(getBackCommandText(current.getTitle())) {
public void actionPerformed(ActionEvent evt) {
back(null);
}
});
}
if(sourceCommand != null && current != null && current.getBackCommand() == sourceCommand) {
f.showBack();
} else {
f.show();
}
return f;
} catch(Exception err) {
err.printStackTrace();
throw new RuntimeException("Form not found: " + resourceName);
}
}
我试过了:
form.setBackCommand(cmd);
public Command setBackCommand(String title, ActionListener<ActionEvent> listener)
public void setBackCommand(Command cmd)
public Command setBackCommand(String title, BackCommandPolicy policy, ActionListener<ActionEvent> listener)
public void setBackCommand(Command cmd, BackCommandPolicy policy)
boolean onBack() {
return true;
}
https://www.codenameone.com/blog/toolbar-back-easier-material-icons.html
在main.java 和myapplication.java 上没有接受命令。
Form3.getToolbar().setBackCommand("", e -> Form3.showBack());
尽管如此,不应该只适用于 form3,而是每个表单。
也没有用。在每个侧面菜单上放置“返回命令”并不是理想的解决方案,因为我们可能会从不同的表单导航到每个表单。
额外: 有没有办法为所有表单启用全局工具栏和全局命令,所以我不会为每个新表单复制粘贴工具栏代码?如果这里没有回答,我可能会做一个新的线程。
谢谢。
【问题讨论】:
标签: java codenameone