![Vaadin 7 UI Design By Example:Beginner’s Guide](https://wfqqreader-1252317822.image.myqcloud.com/cover/861/36705861/b_36705861.jpg)
Time for action – the main layout
Let's start by coding the main layout using our well known friend VerticalLayout
and the new guy HorizontalLayout
:
- Create a new Vaadin project. For this example, we will use layout-framework as project name and
LayoutFrameworkUI
as the UI class. - Create a new Java class
MainLayout
. - Let
MainLayout
extendVerticalLayout
:public class MainLayout extends VerticalLayout { }
- Add layouts for upper and lower sections of
MainLayout
:public class MainLayout extends VerticalLayout { private VerticalLayout upperSection = new VerticalLayout(); private HorizontalLayout lowerSection = new HorizontalLayout(); private VerticalLayout menuLayout = new VerticalLayout(); private VerticalLayout contentLayout = new VerticalLayout(); }
- Add the following default constructor for
MainLayout
:public MainLayout() { upperSection.addComponent(new Label("Header")); menuSection.addComponent(new Label("Menu")); contentSection.addComponent(new Label("Content")); lowerSection.addComponent(menuLayout); upperSection.addComponent(contentLayout); addComponent(upperSection); addComponent(lowerSection); }
- Change the
init
method in yourLayoutFrameworkUI
class to match this:public class LayoutFrameworkUI extends UI { protected void init(VaadinRequest request) { setContent(new MainLayout()); } }
- Compile, deploy, and run your application.
What just happened?
Let's get real; the application doesn't look very impressive so far:
![](https://epubservercos.yuewen.com/A092AF/19470463008249006/epubprivate/OEBPS/Images/2261_03_02.jpg?sign=1739314520-BdcRyBFdUtNxnFwLzsoGs5PRZswhA18w-0-906e67b4d193997da95c97ac584ac21e)
We have created our very own layout class taking advantage of VerticalLayout
. So our MainLayout
is a VerticalLayout
too, but now it contains a VerticalLayout
for the header or upper section and a HorizontalLayout
for the lower section which in turn contains a menu layout and a content layout, both using VerticalLayout
. Layout, layout, layout, what a tongue-twister!
We have added some labels to see how our layout works.
Note
Note that when we add components into a HorizontalLayout
they are placed from left to right.
Take a look at the components tree for MainLayout
(we are showing only layout components):
![](https://epubservercos.yuewen.com/A092AF/19470463008249006/epubprivate/OEBPS/Images/2261_03_03.jpg?sign=1739314520-WtPbVWtLHyfaNk3y5l8d96umwfmIZfeA-0-2609f1bbbe345509278c095bd4604c10)