如何在Vaadin中扩展组件?

如何在Vaadin中扩展组件?,vaadin,Vaadin,SpringBoot 2Vaadin 12.0.3 我花了一些时间观看视频教程,并学习Vaadin的在线示例。不幸的是,改变太多了,我希望尝试的选择已经不存在了 CssLayout不再存在-由不公开展开(组件)的Div取代 component.setWidth(“300”)无效 component.setWidth(“300”,单位。*)不起作用,因为UNIT不在类路径中 component.setWidth(“300px”)可以工作,但它并不优雅,在显示文本的组件上设置显式宽度也远远不够理想

SpringBoot 2
Vaadin 12.0.3

我花了一些时间观看视频教程,并学习Vaadin的在线示例。不幸的是,改变太多了,我希望尝试的选择已经不存在了

  • CssLayout
    不再存在-由不公开
    展开(组件)
    Div
    取代
  • component.setWidth(“300”)
    无效
  • component.setWidth(“300”,单位。*)
    不起作用,因为
    UNIT
    不在类路径中
  • component.setWidth(“300px”)
    可以工作,但它并不优雅,在显示文本的组件上设置显式宽度也远远不够理想
我有三个伪水平菜单项。在大屏幕上,它们是真正水平的。在较小的屏幕上,我希望它们进入垂直模式

  • 组合框应扩展到最长标签的宽度
  • 文本框应扩展到可用的不动产。(可用宽度-组合框宽度-搜索按钮宽度)
  • 搜索按钮应扩展到图标和标签的宽度,无需任何包装

这是否可能通过使用Vaadin 12布局/组件契约来实现,或者我必须花时间在CSS文件中定义这样的控件?

您的问题意味着,如果不使用CSS,使用Vaadin 7或Vaadin 8中的内置布局来实现您的用例是一种简单的方法。您所描述的根据屏幕大小在水平和垂直模式之间自动切换听起来像是需要某种程度的响应布局,这通常意味着直接使用CSS

在旧版本中,您可以使用Java逻辑,根据具体情况使用
垂直布局
水平布局
。这两个类仍然适用于相同类型的用例。API已更改,以更好地与底层flexbox功能保持一致,但总体功能仍然相同


您还可以查看
FormLayout
(核心框架的一部分)或
Board
layout(单独的附加组件),它们都提供一些响应功能。然而,它们最初用于略有不同的用例(分别是表单和仪表板),因此,要使它们符合您的确切要求可能有点困难。

我不确定我是否理解您所说的
CssLayout
Div
之间的区别,因为两者都没有任何
展开方法。