use*_*est 6 java scroll javafx
我需要知道如何更改ScrollPane对象用于上下移动内容的量。例如,ScrollBar有这两种方法:
scrollBar.setUnitIncrement(10);
scrollBar.setBlockIncrement(50);
Run Code Online (Sandbox Code Playgroud)
我如何用 aScrollPane而不是做同样的事情ScrollBar?
ScrollPane 中垂直滚动速度更快:
final double SPEED = 0.01;
scrollPane.getContent().setOnScroll(scrollEvent -> {
double deltaY = scrollEvent.getDeltaY() * SPEED;
scrollPane.setVvalue(scrollPane.getVvalue() - deltaY);
});
Run Code Online (Sandbox Code Playgroud)
在外部样式表中你可以这样做
.scroll-pane .scroll-bar:vertical {
-fx-unit-increment: 10 ;
-fx-block-increment: 50 ;
}
.scroll-pane .scroll-bar:horizontal {
-fx-unit-increment: 5 ;
-fx-block-increment: 20 ;
}
Run Code Online (Sandbox Code Playgroud)
例如。如果您希望它仅应用于单个滚动窗格,请为滚动窗格指定一个 id 等。
小智 5
有同样的问题,无法找到答案。最后从Erik 提供的链接中得到了正确的方法,并根据我的需要进行了调整。
由于 scrollPane 本身没有触发“setOnScroll”-Event(可能是因为它在这样做之前被消耗了),我必须在 ScrollPane的内容上设置 EventHandler :
scrollPane_Content.setContent(vBox_Content);
vBox_Content.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
double deltaY = event.getDeltaY()*6; // *6 to make the scrolling a bit faster
double width = scrollPane_Content.getContent().getBoundsInLocal().getWidth();
double vvalue = scrollPane_Content.getVvalue();
scrollPane_Content.setVvalue(vvalue + -deltaY/width); // deltaY/width to make the scrolling equally fast regardless of the actual width of the component
}
});
Run Code Online (Sandbox Code Playgroud)
这样做可以直接使用滚动条,也可以使用鼠标滚轮上下滚动。
希望这可以帮助其他正在寻找在 scrollPane 上加快滚动速度的人。
Eri*_*agt -3
你可以使用这个:
scrollPane.getVerticalScrollBar().setUnitIncrement(20);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5810 次 |
| 最近记录: |