在Vaadin中为Sizeable对象设置widthUnit / heightUnit

时间:2018-08-09 20:08:18

标签: vaadin

对于较大的对象(https://vaadin.com/api/framework/7.7.3/com/vaadin/server/Sizeable.html),我们分别使用getWidth()和getHeight()获得宽度和高度,并通过getWidthUnit()和getHeightUnit()获得单位。如何设置宽度/高度单位?

编辑: 所以,我问的原因是因为我有一个Panel,并且正在使用一个自动将其滚动到特定行的函数。 Scrollable界面仅以像素为单位提供setScrollTop,所以我想做类似的事情:

panel.setScrollTop(lineNumber / totalLines * heightOfPanelInPixels)

为此,我计划使用SizeReporter插件给我“ heightOfPanelInPixels”,但我不确定我能否保证高度以像素为单位。如果不是,我将需要某种方式来转换单位。

我还问过关于设置单位的问题,因为我认为这只是一个普遍的事情:比如我是否可以为所有Sizeables设置单位,以英寸或像素为单位

1 个答案:

答案 0 :(得分:2)

除了从服务器将所有大小设置为px值之外,实际上没有任何方法可以实现您想要的操作。对于任何其他类型的尺寸定义,以像素为单位的实际尺寸将取决于仅浏览器跟踪的许多不同因素。此外,没有任何机制可以在解决实际大小时将实际大小传递回服务器。

您可能需要尝试使用此插件,以使所选组件的大小在服务器上可用:https://vaadin.com/directory/component/sizereporter

下面的旧答案:

有两种方法可以在任一方向上设置尺寸。它们都导致完全相同的最终结果-这只是表达相同意图的两种不同方式。

以高度为例,有一种setHeight(String)方法期望CSS定义,例如20px3.5em。如果要直接从代码中设置硬编码的大小,此方法很方便使用。

另一种方法是将大小分为数字大小和单独的单位:setHeight(float, Unit),例如setHeight(20, Unit.PX)。如果您想使用大小进行计算,例如通过使用setHeight(2 * getHeight(), getHeightUnit())将其加倍。

设置和获取宽度的方法也完全相同。