私は、新しいGUIビルダーでフォーム間を移動しています。古いものは持っていたback
、デフォルトですべてのフォーム上のボタンを。
どのように私は有効かback
、あらゆる形で私は新しい形でナビゲートするたびに、新しいGUIビルダーのボタンを?theme.resの定数を通じてしようとしました。それはまだ、デフォルトで有効になっていません。
さらに、この方法「新しい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ビルダーからのコマンドは、ここで働いていません。
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());
althouthは唯一たForm3のために働くべきではありませんが、すべてのフォーム。
どちらか動作しませんでした。私たちはさまざまな形式から、各フォームに移動する可能性があるため、すべてのsidemenuの「裏コマンド」を置くことは、理想的なソリューションではありません。
EXTRA:私はそれぞれの新しいフォームのツールバーのコードを貼り付けコピーしないように、すべての形態のためのグローバルツールバーとグローバルコマンドを有効にする方法は、ありますか?ここで答えていない場合は、私は新しいスレッドを作るかもしれません。
ありがとうございました。
それはノキアは、携帯電話業界で世界のリーダーだったと4インチデバイスが大と考えられていた時に設計されていたとして、古いGUIビルダは、ナビゲーションを処理していました。当時、私たちは、UIは、各フォームのために簡単だったとナビゲーションが難しい部分だったと仮定しました。
これが変更されました。しかし、ほとんどの開発者のための大きな問題は、デザインと機能性の両方の問題の多くを引き起こしたステートレスなナビゲーションの概念でした。
新しいGUIビルダーは、任意のナビゲーションコードまたは任意のグローバルコードが含まれていません。各フォームには独自の上に立ちます。
あなただけのフォームのインスタンスを維持し、例えばにナビゲートするフォームを示すことによって、あなた自身のステートマシンを実装することができますことを言いました:
public static class Controller {
private static Form1 f1;
private static Form2 f2;
public static void showF1() {
if(f1 == null) f1 = new Form1();
f1.show();
}
// etc...
}
私は簡単にするため、静的なコンテキストを使用していますが、独自の戦略を実施することができます。あなたはまた、例えばのような機能として、ツールバーを追加し、ここでグローバルなロジックを挿入できることに注意してください:
private static void initForm(Form f) {
// add global commands to the toolbar
}
また、あなたの継承を制限するものではありません新しいGUIビルダーのような共通の基本クラスからのすべてのフォームを導き出すことができます。