1
私は2つのフォームとサイドメニューを持つ簡単なテストケースを持っています。最初のフォームを表示すると、サイドメニューが表示されません。私がウィザードのフォームに行き、戻ってくると、サイドメニューが表示されます。しかし、アプリケーションを最初に起動したときにサイドメニューが表示されることはありません。なぜ私のメニューバーは表示されませんか?
私は、開発者用ガイドはMenuBarコンポーネントに何もないことに注意してください。私がそれを使用しなければならない別の方法がある場合、MenuBar javadocsはそう言います。
import com.codename1.ui.*;
import com.codename1.ui.layouts.BoxLayout;
import com.codename1.ui.plaf.UIManager;
public class Playground {
private Form current;
private MainForm mainForm;
public void init(Object context) {
UIManager.initFirstTheme("/theme");
Toolbar.setGlobalToolbar(true); // Didn't help.
mainForm = new MainForm();
}
public void start() {
if (current != null) {
current.show();
return;
}
Form hi = mainForm;
hi.show();
current = hi;
}
public void stop() {
}
public void destroy() {
}
private class MainForm extends Form {
MainForm() {
super("Test of Hamburger Menu");
setLayout(new BoxLayout(BoxLayout.Y_AXIS));
Button spacer = new Button("Wizard");
spacer.addActionListener((evt)-> showWizard());
add(spacer);
Label normalLabel = new Label("Normal text");
add(normalLabel);
Toolbar toolbar = new Toolbar();
setToolbar(toolbar); // I apparently need to do this or set GlobalToolbar to true, or the menu icon won't appear at all.
// MenuBar menubar = toolbar.getMenuBar(); // Didn't help.
MenuBar menubar = getMenuBar();
Command dummyOne = new Command("One");
Command dummyTwo = new Command("Two");
menubar.addCommand(dummyOne);
menubar.addCommand(dummyTwo);
}
}
private void showWizard() {
Form wizardForm = new Form("Wizard");
wizardForm.setLayout(new BoxLayout(BoxLayout.Y_AXIS));
Button done = new Button("Done");
done.addActionListener((evt)-> backToMain());
wizardForm.add(done);
wizardForm.show();
}
private void backToMain() {
mainForm.show();
}
}
大丈夫です。ありがとうございました。 MenuBarクラスのjavadocでこれを言う必要があります。私がコンストラクタを呼び出すはずがないなら、私はjavadocsにそのことを明確にする必要があります。ツールバーの方法に私を連れて行く "も参照してください"、また役立つだろう。 – MiguelMunoz
ツールバーは、MenuBarクラスと比較して比較的新しいAPIです。ツールバーを使用する場合は、すべてのコマンドをツールバーで管理/制御する必要があります。 MenuBarが理にかなって使用できるユースケースがいくつかあります。 – Chen