2013-04-08 5 views
0

Я пытаюсь перенести приложение из vaadin 6.8 в vaadin 7. Поскольку класс Form устарел в vaadin 7, я пытаюсь создать свои формы с FieldGroup и представить их с помощью FormLayout. Строительство не проблема, но макет не работает так гладко. Прямо сейчас у меня есть две проблемы.Как расположить форму FormLayout в ваадине 7, как форма в ваадине 6?

  1. Как отобразить описание формы сверху по всей ширине формы? Я бы хотел, чтобы он был точно такой же ширины и ни шире, ни только во втором столбце.

  2. Как добавить кнопки (ОК и отменить), чтобы они были рядом друг с другом, а не только во втором столбце? Как нижний колонтитул в старом классе Form.

Возможно ли это с помощью FormLayout или у меня есть другой макет?

Благодаря
Раффаэль

ответ

3

Примечание: Я буквально только начал расследование V7 на прошлой неделе, поэтому будьте осторожны с моим ответом ...

Обе эти проблемы связаны с тем, что FormLayout никогда не предоставлял заголовок и нижний колонтитул - класс формы.

Я бы предложил создать собственный эквивалент формы, который имеет макет заголовка, FormLayout и макет нижнего колонтитула, например. (Не пытался использовать, возможно, придется использовать GridLayout вместо VerticalLayout для mainLaout)

public class FormComponent extends CustomComponent { 
    private Layout mainLayout; 

    protected Layout header; 
    protected Layout central; 
    protected Layout footer; 

    public FormComponent() { 
    init(new HorizontalLayout(), new FormLayout(), new HorizontalLayout()); 
    } 

    protected void init(Layout header, Layout central, Layout footer) { 
    this.footer = footer; 
    this.header = header; 
    this.central = central; 

    mainLayout = new VerticalLayout(); 
    mainLayout.addComponent(header); 
    mainLayout.addComponent(central); 
    mainLayout.addComponent(footer); 

    setCompositionRoot(mainLayout); 
    setSizeUndefined(); 
    } 

    public Layout getHeader() { 
    return header; 
    } 

    public Layout getCentral() { 
    return central; 
    } 

    public Layout getFooter() { 
    return footer; 
    } 
} 
+0

Спасибо. Я уже чему-то научил, но надеялся на встроенное решение. Я собираюсь подождать еще и приму ваш ответ, если на самом деле ничего не стоит. – raffael

2
  1. В Vaadin 7 есть нет встроенного компонента, эквивалентной Vaadin 6 компонента формы. Поэтому вы должны создать свой собственный.
  2. Создайте новый HorizontalLayout и добавьте к нему кнопку OK и Cancel. Затем добавьте HorizontalLayout в форму FormLayout.
Смежные вопросы