在JScrollPane中更顺畅地滚动

时间:2011-08-24 04:01:56

标签: java swing jscrollpane jscrollbar

使用JScrollPane的滚动条箭头滚动(或通过设置箭头键的键绑定)将视口移动一个增量,暂停,然后平滑滚动。我遇到的大多数滚动条表现相同;有轻微的动作,暂停,然后更快的连续滚动。有没有办法避免暂停,以便从头到尾滚动顺畅?

2 个答案:

答案 0 :(得分:6)

主要操作系统指定关键事件的初始延迟和重复率。用户通常会调整主机(平台相关)首选项控制面板中的默认值。类似地,平台的BasicScrollBarUI的子类可以进一步调节节流,例如: com.apple.laf.AquaScrollBarUI v。javax.swing.plaf.metal.MetalScrollBarUI

由于这些设置可能根深蒂固或高度个性化,因此可能很难接受任意更改。

答案 1 :(得分:4)

BasicScrollBarUI负责设置滚动的计时器。

private final static int scrollSpeedThrottle = 60; // delay in milli seconds
...
scrollListener = createScrollListener();
scrollTimer = new Timer(scrollSpeedThrottle, scrollListener);
scrollTimer.setInitialDelay(300);  // default InitialDelay?

您可以看到重复率比初始延迟快。

所以我猜你需要创建一个自定义滚动条UI并覆盖该代码。