Начиная с Vaadin Flow ListBox реализован для ListSelect. Но теперь у меня проблема, потому что я не могу установить ширину.
private final ListBox<Absence> lbRequests=new ListBox<>();
lbRequests.setWidth("100%");//setWidth isn't exist
Это потому, что метод setWidth()
происходит от HasSize
, а не от Component
. ListBox
не реализует HasSize
.
Чтобы иметь возможность устанавливать ширину и высоту ListBox
, вы можете создать свой собственный класс, который затем будете использовать вместо ListBox
:
public class SizedListBox<T> extends ListBox<T> implements HasSize {
public SizedListBox(){
super();
}
}
SizedListBox<Absence> lbRequests = new SizedListBox<>();
lbRequests.setWidth("100%"); // exists and works, I tested it
Как упомянул @JensJansson: вы также можете сделать то же самое, что и HasSize, если хотите исправить это только для одного экземпляра ListBox и, следовательно, не хотите использовать новый класс.
listbox.getElement().getStyle().set("width", "155px");
Редактировать: Эта проблема теперь уже исправлена в основной ветке и больше не будет существовать в следующем выпуске.
@JensJansson Я тоже пишу сообщение на форуме (ссылка здесь), потому что подозреваю, что есть причина, по которой HasSize не реализован. в примеры java ListBox они имеют полную ширину, но не с использованием стиля ширины
Проблема была исправлена и довольно быстро слита в мастеринг. Мастер теперь может устанавливать размеры, и методы будут доступны в следующем выпуске. github.com/vaadin/vaadin-list-box-flow/issues/38
Я собирался ответить точно так же, но ты был быстрее! Я создал для этого билет: github.com/vaadin/vaadin-list-box-flow/issues/38 Обратите внимание, что вы также можете сделать то же самое, что и HasSize, если хотите исправить это только для одного экземпляра ListBox и, следовательно, не хотите использовать новый класс.
listbox.getElement().getStyle().set("width", "155px");