我有下一个问题。我想创建带有标题(位于页面顶部)和菜单(位于页面中心)的页面。有我的代码:Vaadin在布局中的组件位置
package org.crabar.views;
import com.vaadin.annotations.Theme;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener;
import com.vaadin.ui.*;
import org.crabar.ViewController;
/**
* Created by Crabar on 01.11.2014.
*/
@Theme("mytheme")
public class StartView extends VerticalLayout implements View {
public StartView() {
setSizeFull();
setMargin(true);
createTitle();
createMenu();
}
private void createMenu() {
VerticalLayout menu = new VerticalLayout();
menu.setSpacing(true);
menu.setWidth(150, Unit.PIXELS);
menu.setHeightUndefined();
addComponent(menu);
setComponentAlignment(menu, Alignment.MIDDLE_CENTER);
Button startGameButton = new Button("Start game", new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {
ViewController.getInstance().changeView(ViewController.GAME_VIEW);
}
});
startGameButton.setWidth(100, Unit.PERCENTAGE);
menu.addComponent(startGameButton);
Button achievementsButton = new Button("Achievements", new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {
//
}
});
achievementsButton.setEnabled(false);
achievementsButton.setDescription("The achievements will be soon...");
achievementsButton.setWidth(100, Unit.PERCENTAGE);
menu.addComponent(achievementsButton);
}
private void createTitle() {
Label label = new Label("Craberoid 2.0");
label.setStyleName("title-style");
addComponent(label);
label.setWidth(null);
label.setHeight(null);
setComponentAlignment(label, Alignment.TOP_CENTER);
}
}
除了菜单在屏幕上的位置以外的所有罚款。它看起来未来:
所以它不是在屏幕的中心,但中心和底部之间。我花了几个小时,但没有找到如何设置中心的菜单和顶部的标题。
This Works!谢谢。不知道expandRatio ... – Crabar 2014-11-03 19:39:02