迫使Vaadin组件在不可见状态下占据它的空间

时间:2013-06-13 03:46:30

标签: vaadin progress-indicator

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

当程序动态地将进度指示器的可见性设置为true时,树会向下移动,并且UI会因移位而抖动。

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

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

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

asked the question in the Vaadin forum,这是我收到的回复,来自Kim Leppanen

  

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

     

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

     

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

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

答案 1 :(得分:1)

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

foreach ($z in $var) {
    if ($z -like "adm*") {
        $z | out-file c:\ahoy\supertest.csv -append
    } elseif ($z -notlike "adm*") {
        Get-ADGroup $z -Properties samaccountname,description,info |
        select samaccountname,description,info |
        Export-Csv c:\ahoy\supertest.csv -append -NoTypeInformation
    }
}

OR

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