Vaadin Table 的滚动事件
Dashboard Demo(GitHub repo) 项目实际上依赖于 Vaadin 表,正如您在 this 文件中的代码中看到的那样,53,我们我们要做的就是扩展com.vaadin.ui.Table并实现我们自己的行为,从现在开始支持滚动 Vaadin 表格。
首先,让我们创建一个新的简单接口ScrollingTableScrollListener这个接口将负责实现滚动事件,其代码如下所示:
包 com.vaadin.demo.dashboard.scrolling;
公共接口 ScrollingTableScrollListener {
公共无效doTableScroll();
}
只要您的视图中有一个table,并且您想为其添加一个scroll事件处理程序,就应该实现这个接口。但是等一下,这不适用于任何类型的表,这只适用于我们自己的表。
现在,让我们创建表,表的名称是 (ScrollingTable),它扩展了 (com.vaadin.ui.Table) 这个类代码是:
包 com.vaadin.demo.dashboard.scrolling;
导入 java.util.ArrayList;
导入 java.util.List;
导入 java.util.Map;
导入 com.vaadin.ui.Table;
公共类 ScrollingTable 扩展表 {
私有静态最终长序列版本UID = 5007124121625961567L;
列出侦听器 = new ArrayList();
私人无效fireSrollEvent(){
for (ScrollingTableScrollListener listener : listeners) {
listener.doTableScroll();
}
}
公共无效 addScrollListener(ScrollingTableScrollListener 监听器){
listeners.add(listener);
}
@覆盖
public void changeVariables(Object source, Map variables) {
super.changeVariables(源,变量);
fireSrollEvent();
}
}
其实这张表和 Vaadin 的表是一样的,但是有以下区别:
- 它重写了超类(Vaadin Table : com.vaadin.ui.Table)的方法changeVariables(),实际上这里奠定了我们的核心业务,将启动滚动行为。我们这里做的是调用超类的
changeVariables(),然后调用fireSrollEvent()方法。
- 另一个区别是它多了两个成员:
-
public void addScrollListener(ScrollingTableScrollListener listener)此方法将负责为表格的滚动事件添加新的侦听器。
-
private void fireSrollEvent()此方法将由
changeVariables() 方法调用,并将在此表通过调用addScrollListener(). 方法添加的每个已注册侦听器上调用doTableScroll() 方法
现在为了利用我们添加的新内容,我们将更改上述 Dashboard 演示的原始代码(特别是文件TransactionsView.java)。在这个文件中,只有几行需要添加和修改。
首先,我们将修改line 49,添加该类将实现的新接口,即我们的新接口(ScrollingTableScrollListener),并通过在该类末尾添加以下行来实现其单一方法:
@Override
公共无效doTableScroll(){
// TODO 自动生成的方法存根
Notification.show("你正在滚动!\n你可以在这里添加你自己的行为!");
}
然后,我们将更改 53 和 66 这两行以使用新继承的类 (ScrollingTable) 而不是超类 (Table):
//原类中的第53行
药片;
//我们班的第55行
滚动表 t;
……
……
……
//原始类中的第66行
t = 新表() {
//我们班的第68行
t = new ScrollingTable() {
最后,我们应该将监听器添加到我们的 ScrollingTable 的滚动条中:),这是通过在定义表(我们的新类的line 89)之后在表 (t) 上调用方法 addScrollListener 来完成的:
t.addScrollListener(this);
这一行表示这个类(TransactionView)正在监听 ScrollingTable (t) 的滚动事件,每当用户向下/向上滚动 ScrollingTable (t) 时,它都会调用方法 doTableScroll。
在这里,您现在有一个表格,它会在用户滚动时告诉您,您现在的任务是在表格触发滚动事件时执行您想要的操作,并将您的内容放在大括号 {} 的我们在第一步中定义的方法:
@Override
公共无效doTableScroll(){
// 把你自己的代码放在这里...
}
这是 GitHub 上新仪表板的link。
答案在我的blog