鼠标滚轮上的 Vaadin 水平滚动
Vaadin horizontal scroll on mouse wheel
我使用 Vaadin 网格,它有很多列 (50) 而只有一些行 (10)。默认情况下,当用户使用鼠标滚轮时它会垂直滚动,这在这种情况下是不需要的。
在 Vaadin 中是否有内置的方法来实现鼠标滚轮的水平滚动?
应该可以使用 JS 调用。例如,对于 V14 网格,
Grid<String> grid = new Grid<>();
grid.setItems(Arrays.asList("one", "two", "three"));
grid.removeAllColumns();
for (int i = 0; i < 50; i++) {
grid.addComponentColumn(Span::new);
}
grid.getElement().executeJs("let grid = [=10=];"
+ "let scroller = grid.$.scroller;"
+ "scroller.addEventListener('mousewheel', scrollHorizontally, false);"
+ "scroller.addEventListener('DOMMouseScroll', scrollHorizontally, false);"
+ "function scrollHorizontally(e) {"
+ " e = window.event || e;"
+ " let delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));"
+ " grid._scrollLeft -= (delta * 40);"
+ " e.preventDefault();"
+ " }", grid);
我使用 Vaadin 网格,它有很多列 (50) 而只有一些行 (10)。默认情况下,当用户使用鼠标滚轮时它会垂直滚动,这在这种情况下是不需要的。
在 Vaadin 中是否有内置的方法来实现鼠标滚轮的水平滚动?
应该可以使用 JS 调用。例如,对于 V14 网格,
Grid<String> grid = new Grid<>();
grid.setItems(Arrays.asList("one", "two", "three"));
grid.removeAllColumns();
for (int i = 0; i < 50; i++) {
grid.addComponentColumn(Span::new);
}
grid.getElement().executeJs("let grid = [=10=];"
+ "let scroller = grid.$.scroller;"
+ "scroller.addEventListener('mousewheel', scrollHorizontally, false);"
+ "scroller.addEventListener('DOMMouseScroll', scrollHorizontally, false);"
+ "function scrollHorizontally(e) {"
+ " e = window.event || e;"
+ " let delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.detail)));"
+ " grid._scrollLeft -= (delta * 40);"
+ " e.preventDefault();"
+ " }", grid);