首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Vaadin flow (Vaadin14)网格中创建一个可以在ValueChangeEvent中写回的TextField?(不使用网格编辑器)

在Vaadin Flow (Vaadin 14)中,要在网格中创建一个可以在ValueChangeEvent中写回的TextField,可以按照以下步骤进行操作:

  1. 首先,导入所需的Vaadin组件和类:
代码语言:txt
复制
import com.vaadin.flow.component.grid.Grid;
import com.vaadin.flow.component.textfield.TextField;
import com.vaadin.flow.data.value.ValueChangeMode;
  1. 创建一个Grid对象,并设置其数据源:
代码语言:txt
复制
Grid<Item> grid = new Grid<>(Item.class);
grid.setItems(items);

这里的Item是你的数据模型类,items是包含数据的集合。

  1. 创建一个TextField对象,并设置其ValueChangeMode为EAGER(立即响应输入):
代码语言:txt
复制
TextField textField = new TextField();
textField.setValueChangeMode(ValueChangeMode.EAGER);
  1. 添加一个ValueChangeListener到TextField,用于处理值的变化:
代码语言:txt
复制
textField.addValueChangeListener(event -> {
    // 处理值变化的逻辑
});
  1. 在ValueChangeListener中,可以通过event.getSource()获取到TextField对象,进而获取到其当前的值:
代码语言:txt
复制
textField.addValueChangeListener(event -> {
    TextField source = (TextField) event.getSource();
    String value = source.getValue();
    // 处理值变化的逻辑
});
  1. 在处理值变化的逻辑中,可以将新的值写回到网格中的相应位置。可以通过Grid的getDataProvider()方法获取到数据提供者,进而获取到数据集合,并更新相应的数据:
代码语言:txt
复制
textField.addValueChangeListener(event -> {
    TextField source = (TextField) event.getSource();
    String value = source.getValue();
    
    Item item = grid.getSelectionModel().getFirstSelectedItem().orElse(null);
    if (item != null) {
        item.setValue(value);
        grid.getDataProvider().refreshItem(item);
    }
});

这里假设你的网格是可选择的,并且Item类中有一个setValue()方法用于设置值。

以上是在Vaadin Flow (Vaadin 14)网格中创建一个可以在ValueChangeEvent中写回的TextField的步骤。在实际应用中,可以根据具体需求进行适当的调整和扩展。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体的产品选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

依赖什么啊?依赖注入……,什么注入啊?

在过去的几个月里,我和客户团队在对一个设计系统进行优化。表面上看起来这个优化工作包括两大部分:性能优化和结构重整。不过经过这几个月对十多个组件的重构之后,我们发现这两部分工作在很大程度上是同一件事的两个方面:好的设计往往可以带来更好的性能,反之亦然。这是一个非常有趣的发现,我们在讨论性能优化的时候,一个经常被忽略的因素恰恰是软件本身的设计。我们会关注文件大小,是否会有多重渲染,甚至一些细节如CSS selector的优先级等等,但是很少为了性能而审视代码的设计。另一方面,如果一个组件写的不符合S.O.L.I.D原则,我们会认为它的可扩展性不够好,或者由于文件体量过大,且职责不清而变得难以维护,但是往往不会认为糟糕的设计会对性能造成影响(也可能是由于性能总是在实现已经完成之后才被注意到)。为了更好的说明这个问题,以及如何在实践中修改我们的设计,使得代码更可能具有比较优秀的性能,我们可以一起讨论几个典型的例子。

02

既可生成点云又可生成网格的超网络方法 ICML

本文发表在 ICML 2020 中,题目是Hypernetwork approach to generating point clouds。利用超网络(hypernetworks)提出了一种新颖的生成 3D 点云的方法。与现有仅学习3D对象的表示形式方法相反,我们的方法可以同时找到对象及其 3D 表面的表示。我们 HyperCloud 方法主要的的想法是建立一个超网络,返回特定(目标)网络的权重,目标网络将均匀的单位球上的点映射到 3D 形状上。因此,特定的 3D 形状可以从假定的先验分布中通过逐点采样来生成,并用目标网络转换。因为超网络基于自动编码器,被训练来重建3D 形状,目标网络的权重可以视为 3D 表面的参数化形状,而不像其他的方法返回点云的标准表示。所提出的架构允许以生成的方式找到基于网格的 3D 对象表示。

03
领券