Боковое меню панели инструментов с заголовком и прокручиваемым содержимым

Я хотел бы создать боковое меню с заголовком и прокручиваемым контентом. Я также попробовал несколько вещей:

  //that works: i can scroll in the content container and the status label stay on top but it's in my welcome form
    Form welcome = new Form("Welcome");
    welcome.setLayout(new BorderLayout());

    Label welcomeStatusLabel = new Label("STATUS");
    Container welcomeContent = new Container(new BoxLayout(BoxLayout.Y_AXIS));
    welcomeContent.setScrollableY(true);

    for(int i=0; i<20; i++)
        welcomeContent.add(new Label("Item "+i));

    welcome.add(BorderLayout.NORTH,welcomeStatusLabel);
    welcome.add(BorderLayout.CENTER,welcomeContent);

Теперь я хочу такое же поведение в моем sidemenu, и я пытаюсь это:

   //that doesn't work: I can't scroll
    Form menu= new Form("Menu");
    menu.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); 

    for(int i=0; i<20; i++)
        menu.add(new Label("Item "+i));

    welcome.getToolbar().addComponentToSideMenu(menu);

Может быть, я не могу поместить форму в боковое меню панели инструментов, поэтому я пытаюсь использовать контейнер:

     //that doesn't work: the status label will scroll with the content
    Container menuContainer = new Container(new BorderLayout());
    menuContainer.add(BorderLayout.NORTH,new Label("MENU STATUS"));
    Container menuContent = new Container(new BoxLayout(BoxLayout.Y_AXIS));

    for(int i=0; i<20; i++)
        menuContent.add(new Label("Item "+i));

    menuContainer.add(BorderLayout.CENTER,menuContent);
    //if I uncomment these two lines the content won't scroll anymore on simulator. On android it scrolls with the status label
    //menuContainer.setScrollableY(false);
    //menuContent.setScrollableY(true);
    welcome.getToolbar().getMenuBar().setScrollableY(false);//I don't know what that line does
    welcome.getToolbar().addComponentToSideMenu(menuContainer);

Может быть, я не должен делать это в дополнительном меню? или, может быть, я не использую нужные компоненты?

Любая помощь будет оценена.

С наилучшими пожеланиями.

Jonas

1 ответ

Решение

Вы не должны добавлять Form в другой компонент, а не в боковое меню.

Если вы просто хотите, чтобы боковое меню выглядело как область заголовка формы, вы можете сделать что-то вроде:

SpanLabel fakeTitle = new SpanLabel("My Title", "Title");
fakeTitle.setUIID("TitleArea");
welcome.getToolbar().addComponentToSideMenu(fakeTitle);

Я бы не стал этого делать. Проверьте некоторые из наших демонстраций для хороших дизайнов бокового меню.

Другие вопросы по тегам