【问题标题】:Vaadin table keeps showing scrollbarsVaadin 表一直显示滚动条
【发布时间】:2012-02-16 10:58:53
【问题描述】:

我在一些布局中有一个 Table 组件,我不希望它显示任何滚动条。

表格将始终仅显示 25 行,宽度应始终为 720 像素。但是,表格一直显示垂直和水平滚动条,我不知道如何。有趣的是(虽然我现在很想哭),有时滚动条会消失。当我不断刷新页面时,有时它们会消失并且一切正常。

以下是我在调试数小时后收集到的一些信息:

  1. 有时,图标/图像/等。未加载并从现金中显示,有时是。猜猜看,这也是打开和关闭滚动条,尽管图像仍然显示。
  2. 每列的宽度有时会多几个像素 - 这就是显示水平滚动条的原因,我认为这也是显示垂直滚动条的原因(因为水平滚动条从表格的高度占用了一些像素)李>
  3. 我曾尝试在填表后调用 requestRepaint,甚至在父组件及其父组件及其父组件上调用 requestRepaintAll 等等...
  4. 我已尝试以百分比设置每列的宽度。 100000。)我想我已经尝试了 4 到 100000 之间的所有其他东西。

我一定错过了什么。很多人都有这个问题,我直接在vaadin页面上找到了很多线程,但是没有THIS-DEFINITELY-WORKS的解决方案。

编辑代码:

Table t = new Table();
t.setWidth("720px");
t.setImmediate(true);
t.setSelectable(true);

// Headers
t.addContainerProperty("fullName", String.class,  null, "Meno", null, null);
t.setColumnExpandRatio("fullName", 22);

t.addContainerProperty("dateOfBirth", Date.class,  null, "Narodenie", null, null);
t.setColumnExpandRatio("dateOfBirth", 18);

t.addContainerProperty("lastYearCosts", BigDecimal.class,  null, "Náklady", null, null);
t.setColumnExpandRatio("lastYearCosts", 10);

t.addContainerProperty("lastYearBalance", BigDecimal.class,  null, "Saldo", null, null);
t.setColumnExpandRatio("lastYearBalance", 10);

t.addContainerProperty("activeClient", ComparableBooleanEmbeddedIcon.class,  null, "", new ThemeResource("icons/icon-app-header-medipartner.png"), Table.ALIGN_CENTER);
t.setColumnExpandRatio("lastYearBalance", 8);

t.addContainerProperty("dmsCount", String.class,  null, "", new ThemeResource("icons/icon-app-header-heart.png"), null);
t.setColumnExpandRatio("dmsCount", 8);

t.addContainerProperty("authCount", String.class,  null, "", new ThemeResource("icons/icon-app-header-warnings.png"), null);
t.setColumnExpandRatio("authCount", 8);

t.addContainerProperty("book", CssLayout.class,  null, "Objednať", null, Table.ALIGN_CENTER);
t.setColumnExpandRatio("book", 16);

然后,我只是用 addItem(Object[] item) 填充行。

【问题讨论】:

  • 一些代码、截图或现场演示会有所帮助。
  • 我也对 Vaadin 中的某些控件有时会出现滚动条感到失望。尝试使用 Firebug 捕获有问题的 <div> 并分享您的发现。
  • 嗯,这就是问题所在。所有布局元素都有正确的宽度。甚至表格元素(我的意思是
    包装器)也具有所需的宽度。但是里面的 元素有时有 731px 的宽度。这就是出现滚动的原因。
  • 您的应用程序中是否有自定义主题。通常,当您获得额外的滚动条时,您会以不受支持的方式对某些内容进行主题化。尝试将 ?theme=reindeer 添加到您的应用程序 url 的末尾,看看是否还有滚动条。
  • 我试过了,表格没有显示滚动条。然而,正如我所写,在我的主题下,有时滚动条存在,有时不存在。真的很奇怪。

标签: java vaadin


【解决方案1】:

我遇到了同样的问题 - 烦人的滚动条。我使用自己的主题和覆盖 css 样式修复了这个问题。

要在Application 的实现中这样做,您必须设置主题调用setTheme("mytheme")

然后,当您定义表格时,您可以使用自己的样式(将有问题的表格与其他表格区分开来):

Table table = new Table()
table.addStyleName("mystyle")

然后你必须在VAADIN/themes/mytheme/styles.css中定义你自己的css样式:

@import "../reindeer/styles.css";
.v-table-mymodel .v-scrollable {
    overflow: hidden;
}

【讨论】:

    【解决方案2】:

    你应该使用

    table.setPageLength(0);
    

    它将删除 vaadin 表中的所有滚动条。

    【讨论】:

    • 这只会删除垂直的
    【解决方案3】:

    试试

    grid.recalculateColumnWidths()
    

    【讨论】:

    • 添加一些解释,说明此答案如何帮助 OP 解决当前问题
    • 这有助于我在动态更改数据时使用Grid 组件创建的表格中显示水平滚动条。谢谢!
    • 垂直滚动出现时,grid中的所有列都保持原来的大小,然后出现水平滚动以显示被垂直滚动隐藏的列。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多