使用JScrollPane的滚动条箭头来滚动(或通过为箭头键设置键绑定)将视口移动一个增量,暂停,然后平滑滚动。我遇到的大多数滚动条的行为都是一样的;有一个轻微的移动,一个暂停,然后更快的连续滚动。是否有办法避免暂停,以便从头到尾平滑滚动?
关键事件的初始延迟和重复率由主机操作系统指定。用户经常在主机的(依赖于平台的)首选项控制面板中调整默认值。类似地,平台的BasicScrollBarUI
子类可能进一步约束节流,例如com.apple.laf.AquaScrollBarUI
vs . javax.swing.plaf.metal.MetalScrollBarUI
。
由于这些设置可能是根深蒂固的或高度个性化的,任意更改可能会让人难以接受。
BasicScrollBarUI
负责设置滚动的计时器。
private final static int scrollSpeedThrottle = 60; // delay in milli seconds
...
scrollListener = createScrollListener();
scrollTimer = new Timer(scrollSpeedThrottle, scrollListener);
scrollTimer.setInitialDelay(300); // default InitialDelay?
可以看到,重复速率比初始延迟快。
所以我猜你需要创建一个自定义滚动条UI并重写该代码