2

我的 Vaadin 指标中有一个标签和一个进度指标。它在 UI 中动态可见。此进度指示器下方有一棵树。

当程序动态地将 Progress Indicator 的可见性设置为 true 时,树会向下移动,并且 UI 会因移动而抖动。

有没有办法让 Vaadin 组件占据它的空间,即使它是不可见的,因此,当它变得可见时,它不能尝试从其他 UI 组件借用空间?

我正在寻找的是一个类似于 flex 和 actionscript 编程中的 setRendered(true) 的功能。

谢谢你的帮助。

4

2 回答 2

4

最后我得到了我的问题的答案。我只是用没有文本的虚拟可见标签替换了不可见的组件。

并交替使用它在可见和不可见之间切换。

在 Vaadin 论坛上提出了这个问题,这是我得到的来自Kim Leppanen的回复:

在 Vaadin 7 中,如果将组件的可见性设置为 false,则组件的信息根本不会发送到浏览器 - 就好像组件根本不存在于布局中一样。

我可以很快想出两个解决方案。如果您知道要切换其可见性的组件的大小,则可以使用占位符组件 - 例如标签。将尺寸正确的标签放在您想要组件的位置。如果要将组件设置为可见,则将标签替换为实际组件。

第二种选择是使用 css。为要隐藏的组件应用 css 属性“可见性:隐藏”。请注意,该组件不是“真正”隐藏的。假设它是一个按钮。用户仍然可以检查 DOM 树并查看代码中的按钮,更改客户端组件的可见性(例如使用开发人员工具或 firebug),然后查看和使用按钮,就好像它在布局中可见一样.

我把它放在这里是因为人们可能会在那里添加一些更有用的答案。有关详细说明,请参阅

于 2013-06-13T17:20:49.527 回答
1

将以下示例用于您想要设置为不可见但保持其占用空间的组件:

Image home = new Image();
home.setSource(HOME);
home.addStyleName("visibility: hidden");

或者

home.addStyleName("visibility: collapse");
于 2016-03-17T15:01:01.620 回答