首页 > 解决方案 > 在 Vaadin 中为 Sizeable 对象设置 widthUnit/heightUnit

问题描述

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

编辑:所以,我问的原因是因为我有一个面板,我正在开发一个自动滚动到某一行的功能。Scrollable 接口只提供像素方面的 setScrollTop,所以我想做类似的事情:

panel.setScrollTop(lineNumber/totalLines * heightOfPanelInPixels)

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

另外,我问了关于设置单位的问题,因为我认为这只是一个通用的东西:就像我可以为所有 Sizeables 设置单位以报告,比如英寸或像素

标签: vaadin

解决方案


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

您可能想试试这个插件,它可以在服务器上提供所选组件的大小:https ://vaadin.com/directory/component/sizereporter 。

下面的旧答案:

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

以高度为例,有一个setHeight(String)方法需要一个 CSS 定义,例如20pxor 3.5em。此方法使用方便,您想直接从代码中设置硬编码大小。

另一种方法将大小拆分为数字大小和单独的单位:setHeight(float, Unit)例如setHeight(20, Unit.PX)。如果你想用大小进行计算,这种方法更实用,例如使用setHeight(2 * getHeight(), getHeightUnit()).

设置和获取宽度也以完全相同的方式工作。


推荐阅读