我有一个TabSheet
和一个标签项。
标签内有一个表格。
我已将所有高度设置为setFullSize
,但表格的高度不会占据整个标签。
代码在这里:
public class GvApplication extends Application {
private static Logger log = Logger.getLogger(GvApplication.class.getName());
Window mainWindow;
TabSheet tabsheet;
@Override
public void init() {
setTheme("gv");
mainWindow = new Window("Test");
mainWindow.getContent().setHeight("100%");
tabsheet = new TabSheet();
tabsheet.setSizeFull();
mainWindow.addComponent(tabsheet);
initSMSTab();
setMainWindow(mainWindow);
}
private void initSMSTab() {
VerticalLayout tab = new VerticalLayout();
tab.setMargin(true);
Table table = new Table("Naam");
table.setWidth("100%");
table.setHeight("100%");
table.setSizeFull();
tab.addComponent(table);
tabsheet.addTab(tab);
Tab smsTab = tabsheet.getTab(tab);
smsTab.setCaption("SMS");
}
}
桌子底下还有很多空间。如何让表格使用标签的全部内容?
答案 0 :(得分:3)
如果组件应占用布局中的所有可用空间,除了在组件上调用setExpandRatio
之外,还必须在布局上调用setSizeFull
。在你的情况下:
tabsheet.setSizeFull();
VerticalLayout rootLayout = new VerticalLayout();
rootLayout.setSizeFull();
rootLayout.addComponent(tabsheet);
rootLayout.setExpandRatio(tabsheet, 1f);
mainWindow.setContent(rootLayout);
答案 1 :(得分:1)
默认情况下,当您创建新的表组件时,表“页面长度”表示行计数,值为15,这就是为什么表没有设置选项卡的完整大小的原因。设置完整大小的唯一方法是通过table.setPageLength(30)增加表“页面长度”。
PS。你可以删除这一行,因为你已经使用了“table.setSizeFull();”
table.setWidth("100%");
table.setHeight("100%");
编辑1
只有在调整父级或表格组件的大小时,才会在评论中显示在屏幕上的情况。尝试将 ResizeListener 添加到您的窗口,并在内部监听器中编写类似
的内容 // This will return current rendered rows count
int shownRowsCount = table.getVisibleItemIds().size();
table.setPageLength(shownRowsCount);