对于较大的对象(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设置单位,以英寸或像素为单位
答案 0 :(得分:2)
除了从服务器将所有大小设置为px
值之外,实际上没有任何方法可以实现您想要的操作。对于任何其他类型的尺寸定义,以像素为单位的实际尺寸将取决于仅浏览器跟踪的许多不同因素。此外,没有任何机制可以在解决实际大小时将实际大小传递回服务器。
您可能需要尝试使用此插件,以使所选组件的大小在服务器上可用:https://vaadin.com/directory/component/sizereporter。
下面的旧答案:
有两种方法可以在任一方向上设置尺寸。它们都导致完全相同的最终结果-这只是表达相同意图的两种不同方式。
以高度为例,有一种setHeight(String)
方法期望CSS定义,例如20px
或3.5em
。如果要直接从代码中设置硬编码的大小,此方法很方便使用。
另一种方法是将大小分为数字大小和单独的单位:setHeight(float, Unit)
,例如setHeight(20, Unit.PX)
。如果您想使用大小进行计算,例如通过使用setHeight(2 * getHeight(), getHeightUnit())
将其加倍。
设置和获取宽度的方法也完全相同。