Vaadin Horizo​​ntalSplitPanel:以像素为单位设置右侧宽度

Vaadin HorizontalSplitPanel: Set right side width in pixels

我可以像下面这样以像素为单位设置 HorizontalSplitPanel 的左侧宽度。

splitter.setSplitPosition(40, Sizeable.Unit.PIXELS);

同上,由于分割位置是40像素,所以分割器左边的宽度是40像素。在某些情况下,我想以像素为单位指定拆分器右侧的宽度。

但是,我无法通过上述方式设置右侧,因为无法找到拆分器的总宽度。如果我能得到总宽度,我可以像下面那样做。

splitter.setSplitPosition(splitter.totalWidth() - 40, Sizeable.Unit.PIXELS);

那么,有什么方法可以定义右侧宽度(以像素为单位)?

您可以"reverse"拆分位置。见 setSplitPosition(float pos, Sizeable.Unit unit, boolean reverse):

reverse - if set to true the split splitter position is measured by the second region else it is measured by the first region

例如:

// run with `spring run vaadin.groovy`
@Grapes([
@Grab('org.vaadin.spring:spring-boot-vaadin:0.0.5.RELEASE'),
@Grab('com.vaadin:vaadin-server:7.5.9'),
@Grab('com.vaadin:vaadin-client-compiled:7.5.9'),
@Grab('com.vaadin:vaadin-themes:7.5.9'),
])
import org.vaadin.spring.annotation.VaadinUI
import com.vaadin.server.VaadinRequest
import com.vaadin.ui.*
import com.vaadin.annotations.*
import com.vaadin.server.Sizeable

@VaadinUI
@Theme("valo")
class MyUI extends UI {
        protected void init(VaadinRequest request) {
                setContent(new HorizontalSplitPanel(new Label("A"), new Label("B")).with{
                        setSplitPosition(40, Sizeable.Unit.PIXELS, true /*!*/)
                        it
                })
        }
}