Just How do you center the Main Window?

Hi people,

I have a main Window that I want to center in the middle of the page and then add components to it


 MainWindow win = new MainWindow(); // MainWIndow extends Window

        VerticalLayout layout = new VerticalLayout();

        Button button = new Button();
        layout.setComponentAlignment(button, Alignment.TOP_CENTER);

       //  win.setPositionY(100); DIDN'T WORK EITHER
       // win.setPositionX(100); DIDN'T WORK EITHER

I have tried the above and the center method and the setPosition does not work. My window is still stuck in the top left corner. What am I doing wrong? How can I bring it in the middle? Any help? Using Vaadin 6.3.0

First you need to make the window root layout (content) full size, and then you can position the inner layout using setComponentAlignment. Like this:

VerticalLayout content = (VerticalLayout) getMainWindow().getContent();

content.setComponentAlignment(layout, Alignment.MIDDLE_CENTER);

And if you’re going to center some non-full-size compoennt, say want to add a button or label to the window(panel) center, you’ll need to add a couple of sizers and set an expand rations:

Label sizer1 = new Label("");
Label sizer2 = new Label("");


addComponent ( sizer1 );
addComponent ( myButton );
addComponent ( sizer2 );

setExpandRatio ( sizer1, 0.5f );
setExpandRatio ( sizer2, 0.5f );
setComponentAlignment( myButton, Alignment.MIDDLE_CENTER );

Thanks guys for you suggestions. I can center components onto any layout. The Issue am facing is centering the main window so I can add layout to a centered window

I want this code to center the main window as in this code

        Window win = this.getMainWindow();

@Henri am getting a null pointer Exception with this code

VerticalLayout content = (VerticalLayout) getMainWindow().getContent();

main window == web browser page. So if you call ( (VerticalLayout) getContent() ).setSizeFull (); - the working area will shrink to entire browser’s window, both horizontally and vertically.

Then, if you have, say, another layout (not 100% W/H) with your UI which you want to be displayed in the center of main window - try my example above with the sizers.

getContent() should not return NULL if you’re creating standard Vaadin’s Window. How do you create it ?


This code throws the null pointer exception

public class Main extends Application {
    public void init() {
        VerticalLayout content = (VerticalLayout) getMainWindow().getContent();// NP here
        Label sizer1 = new Label("");
        Label sizer2 = new Label("");
        Button myButton = new Button("CEnter Me Please");
        content.setExpandRatio(sizer1, 0.5f);
        content.setExpandRatio(sizer2, 0.5f);
        content.setComponentAlignment(myButton, Alignment.MIDDLE_CENTER);

You have to set main window for your application, so call something like setMainWindow(new Window()); before the NPE.

Thanks guys managed to center the window at last with this code

public class HashPayMain extends Application {
    public void init() {
        MainWindow main = new MainWindow();
        VerticalLayout content = new VerticalLayout();
        Content contPanel = new Content();
        content.setComponentAlignment(contPanel, Alignment.MIDDLE_CENTER);

Im using several views… like

public class HomeViewImpl extends VerticalLayout implements HomeView {

how can I center a view?