2017-01-01 4 views
2

enter image description hereサイドメニューにtwoボタンを追加します。 One下のように私はcodeの下に追加したしかしotherトップでその作業とその表示された画像はに追加されません。 sidemenuにボタンを追加する方法topbottomに?サイドとサイドにボタンを追加するにはどうすればいいですか?

enter image description here

Toolbar addToolbar(Form f) { 


    Toolbar toolbar = new Toolbar(); 

     f.setToolbar(toolbar); 

     Container container = new Container(new BorderLayout()); 
     container.add(BorderLayout.NORTH,new Button(" north")); 
     container.add(BorderLayout.SOUTH,new Button(" south")); 
     toolbar.addComponentToSideMenu(container); 

    } 


void addToolbars(Form fs) { 
     Form f = new Form(" Test"); 
     Toolbar toolbar = new Toolbar(); 

     f.setToolbar(toolbar); 

     Container container = new Container(new BorderLayout()); 
     container.add(BorderLayout.NORTH, new Button(" north")); 
     container.add(BorderLayout.CENTER, new Button("center")); 
     container.add(BorderLayout.SOUTH, new Button(" south")); 
     toolbar.addComponentToSideMenu(container); 

     Container mySideMenuContainer = new Container() { 
      @Override 
      public void initComponent() { 

       getParent().setLayout(new GridLayout(1, 1)); 
       getParent().setScrollableY(false); 
       getParent().revalidate(); 
      } 
     }; 
     mySideMenuContainer.addComponent(container); 
     toolbar.addComponentToSideMenu(mySideMenuContainer); 
     f.show(); 
    } 

画像

答えて

0

に示すように、容器は、画面の半分だけが含まれてあり、そのためのAPIはありません、それはサポートされていません。

しかし、Codename Oneにあるもののように、時には一緒にハックすることができます。

など。

Container mySideMenuContainer = createSideMenuContainer() { 
    @Override 
    public void initComponent() { 
     Container p = getParent(); 
     if(!(p.getLayout() instanceof BorderLayout)) { 
      Component[] cmp = new Component[p.getComponentCount()]; 
      for(int iter = 0 ; iter < cmp.length ; iter++) { 
       cmp[iter] = p.getComponentAt(iter); 
      } 
      p.removeAll(); 
      p.setLayout(new BorderLayout()); 
      if(cmp.length == 1) { 
       p.add(BorderLayout.CENTER, cmp[0]); 
      } else { 
       p.add(BorderLayout.NORTH, cmp[0]); 
       p.add(BorderLayout.CENTER, cmp[1]); 
      } 
      p.revalidate(); 
     } 
    } 
}; 
toolbar.addComponentToSideMenu(mySideMenuContainer); 
+0

それは(この行 mySideMenuContainer.getParentでjava.lang.NullPointerExceptionがを示しています。私はそれがaddComponentToSideMenuメソッドの実装の詳細に依存しているとして、それは永遠に動作する保証はありませんが、このようなものはハックのように動作するはずです).setLayout(新しいGridLayout(1、1)); – tizbn

+0

OKハックをもっと「ハック」にするようにコードを修正しました。 –

+0

私はこの新しいコードを使用しました。そのコード全体がスクリーンショットで質問の上に追加されています。画面全体の高さをカバーする方法は、画面の半分をカバーするだけですか? – tizbn

関連する問題