如何在vaadin7表中实现滚动监听器
在Vaadin中,当您在表格(com.Vaadin.ui.Table)中向下或向上滚动时,不会触发任何事件来通知您用户正在滚动 为什么我们需要在表中滚动事件? 首先让我们看一下这个Vaadin()的例子,打开链接后,只需单击“登录”,您将自动重定向到“交易”页面,该页面显示金融交易的表格,这些交易将在您滚动时显示一批又一批,实际发生的情况是,数据是在UI启动时加载的(所有事务) 现在,让我们假设我们有成千上万的交易。当UI启动时,将它们全部加载在一起是否合乎逻辑?在UI等待所有事务加载时,一点一点地加载它们以防止减慢UI速度,这难道不是明智之举吗 此问题的最佳解决方案是获取第一个(比如100个事务),然后在向下滚动时获取更多事务,但此解决方案只有一个问题,即Vaadin不支持com.Vaadin.ui.Table中的滚动事件处理!!Vaadin表的滚动事件 (GitHub)项目实际上依赖于Vaadin表,正如您在第53行的文件代码中看到的,我们要做的是扩展com.Vaadin.ui.Table并实现我们自己的行为,从现在开始支持滚动Vaadin表 首先,让我们创建一个新的简单接口ScrollingTableScrollListener此接口将负责实现scroll事件,其代码如下所示: package com.vaadin.demo.dashboard.scrolling; public interface ScrollingTableScrollListener { public void doTableScroll(); } 实际上,这张表与瓦丁的表相同,但有以下区别:如何在vaadin7表中实现滚动监听器,vaadin,Vaadin,在Vaadin中,当您在表格(com.Vaadin.ui.Table)中向下或向上滚动时,不会触发任何事件来通知您用户正在滚动 为什么我们需要在表中滚动事件? 首先让我们看一下这个Vaadin()的例子,打开链接后,只需单击“登录”,您将自动重定向到“交易”页面,该页面显示金融交易的表格,这些交易将在您滚动时显示一批又一批,实际发生的情况是,数据是在UI启动时加载的(所有事务) 现在,让我们假设我们有成千上万的交易。当UI启动时,将它们全部加载在一起是否合乎逻辑?在UI等待所有事务加载时,一点一
changevalues()
,然后调用了fireSrollEvent()
方法changeVariables()
方法调用,并将通过调用方法addScrollListener()对该表添加的每个注册侦听器调用方法doTableScroll()
。
changevalues()
,然后调用了fireSrollEvent()
方法changeVariables()
方法调用,并将通过调用方法addScrollListener()对该表添加的每个注册侦听器调用方法doTableScroll()
。
我的上的答案根据您的问题,您正在寻找延迟加载 如果将表与支持延迟加载的容器连接,则项目将从其数据源延迟加载。这意味着当您滚动并从缓冲项中取出时,表会向容器“询问”更多项。然后容器从其数据源加载更多项
例如,来自Vaadin的支持该功能。此容器使用JPA连接到数据源。更多信息。根据您的问题,您正在寻找延迟加载 如果您将表与支持 t.addScrollListener(this); @Override public void doTableScroll() { // Put your own code here ... }
public class ScrollingTable extends Table {
// ...
@Override
public void changeVariables(Object source, Map<String, Object> variables) {
super.changeVariables(source, variables);
handleScrollEvent(variables);
}
private void handleScrollEvent(Map<String, Object> variables) {
if (variables.containsKey("firstvisible")) {
for (TableScrollListener listener : listeners) {
listener.doTableScroll();
}
}
}