Я совершенно новый для vaadin, и сейчас я боюсь этих проблем в течение 2 дней, и я в отчаянии. Я изменил пример оригинала addressbook, и это было прекрасно до тех пор, пока мне не пришлось расширять ContactForm с помощью других контролей. Проще показать, чего я хочу достичь. Было бы хорошо, если бы я мог прокрутить направо, но я не могу. Я покажу, что, возможно, некоторые из вас заметят мою ошибку. Я не буду публиковать весь код, просто необходимые части.Проблемы с Vaadin с размером пользовательского интерфейса и полосой прокрутки
Здесь я создаю основной макет.
public class VaadinKoliUI extends UI {
@Override
protected void init(VaadinRequest request) {
TabSheet tabsheet = new TabSheet();
HorizontalLayout residentalsTab = new ResidentalsUI();
residentalsTab.setSizeFull();
tabsheet.addTab(residentalsTab,"Lakók");
tabsheet.setSizeFull();
setContent(tabsheet);
}
}
public class ResidentalsUI extends HorizontalLayout implements View{
private Grid residentalsList = new Grid();
ResidentalFormTest residentalForm = new ResidentalFormTest(this);
public ResidentalsUI(){
buildLayout();
}
private void buildLayout(){
HorizontalLayout actions = new HorizontalLayout(filter,excelDownload, newResidental);
actions.setWidth("100%");
filter.setWidth("100%");
actions.setExpandRatio(filter, 1);
VerticalLayout left = new VerticalLayout(actions, getResidentalsList());
left.setSizeFull();
getResidentalsList().setSizeFull();
left.setExpandRatio(getResidentalsList(), 1);
HorizontalLayout mainLayout = new HorizontalLayout(left, residentalForm);
mainLayout.setSizeFull();
mainLayout.setExpandRatio(left, 1);
this.setSizeFull();
this.addComponent(mainLayout);
}
}
public class ResidentalFormTest extends Panel{
FormLayout content = new FormLayout();
Button save = new Button("Save", this::save);
//more buttons and controlls
public ResidentalFormTest(ResidentalsUI rUI) {
this.rUI = rUI;
buildLayout();
}
private void buildLayout() {
this.setSizeUndefined();
content.setMargin(true);
HorizontalLayout actions = new HorizontalLayout(save, cancel);
actions.setSpacing(true);
content.addComponents(actions, name, sex, address, email, phoneNumber, major,classYear,neptunCode,
roomNumber, rfidCode,comment,equipment,equipment1,equipment2);
actions.setSizeUndefined();
this.setContent(content);
}
}
Так от того, что я понял еще, что я должен использовать панель, потому что FormLayout не способен показать полоса прокрутки. Я должен установить свой корень в полном объеме с помощью .setSizeFull(), а childs - неопределенным с .setSizeUndefined(), поэтому это будет размер окна браузера, и если что-то будет больше, оно отобразит полосу прокрутки. Если я изменю класс VaadinKoliUI следующим образом, у меня есть полоса прокрутки, но ui сжимается.
public class VaadinKoliUI extends UI {
@Override
protected void init(VaadinRequest request) {
TabSheet tabsheet = new TabSheet();
HorizontalLayout residentalsTab = new ResidentalsUI();
residentalsTab.setSizeUndefined();
tabsheet.addTab(residentalsTab,"Lakók");
tabsheet.setSizeFull();
setContent(tabsheet);
}
}
И теперь я не знаю, что делать.
Но если у кого-то есть более простая и быстрая идея, чтобы прокрутить ContactForm, пожалуйста, скажите мне.
Заранее спасибо Балаж
Спасибо за ваше время, это решило проблему. – blase