【问题标题】:Button extending CssLayout does not fire click event reliably扩展 CssLayout 的按钮不会可靠地触发点击事件
【发布时间】:2024-01-16 03:26:01
【问题描述】:

我的 Vaadin Web 应用程序使用从 CssLayout 扩展而来的自定义按钮。 点击监听器被添加到带有addLayoutClickListener 的布局/按钮中。

通常当点击布局/按钮时,不会触发任何事件。

似乎只有当鼠标在按下和释放之间根本没有移动时才会触发该事件。传统的 UI 按钮允许鼠标在按下和释放之间移动,只要在释放期间指针仍在按钮区域内(“按下并武装”状态)。

我一定要使用com.vaadin.ui.Buttoncom.vaadin.ui.NativeButton吗?

有人可以解释一下为什么布局方法不能可靠地工作吗?

【问题讨论】:

  • 也许您的 Layout 中有一些组件可以捕获部分点击?
  • 您不使用 Vaadin 的Button 的原因是什么?或者,您可以尝试将自己的按钮实现为自定义小部件(如果您需要,我可以给您一些关于 HOWTO 的指示)。
  • @SteffenHarbich 最初的原因是我无法在合理的时间内自定义默认按钮的样式(Valo 主题对我来说太复杂了)。不过,这个点击问题可能会迫使我再试一次。
  • @AndréSchild 正好有一个 Label 添加到 CssLayout,包含按钮文本。
  • 如果您解释确切的样式问题,我可能会抽出时间来帮助您。

标签: javascript gwt vaadin vaadin8


【解决方案1】:

我无法在合理的时间内自定义默认按钮的样式(Valo 主题对我来说太复杂了)

使用button.setPrimaryStyleName("my-button"),您将拥有一片空白来应用自己的 CSS。

【讨论】: