2016-05-27 7 views
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(); 
    } 

} 

答えて

1

コマンドを追加するには、ツールバーを使用する必要があります。

toolbar.addCommandToSideMenu(dummyOne); 
+0

大丈夫です。ありがとうございました。 MenuBarクラスのjavadocでこれを言う必要があります。私がコンストラクタを呼び出すはずがないなら、私はjavadocsにそのことを明確にする必要があります。ツールバーの方法に私を連れて行く "も参照してください"、また役立つだろう。 – MiguelMunoz

+0

ツールバーは、MenuBarクラスと比較して比較的新しいAPIです。ツールバーを使用する場合は、すべてのコマンドをツールバーで管理/制御する必要があります。 MenuBarが理にかなって使用できるユースケースがいくつかあります。 – Chen

関連する問題