我有一个非常大的数据视图。我想为用户提供一个滚动条,但是我想重写滚动条按下向上和向下箭头(或键盘上的上下键)的标准方式,以及点击页面上的轨道区域以及向下翻页。这是因为数据流入视图,而JScrollBar的“最小/最大/值”模型不适用于此。如何防止JScrollBar滚动页面向下的特定事件?
处理这些鼠标或按键事件的标准方式是滚动条的值可以通过“单位增量”(较小的值)或“块增量”(较大的值)进行调整。 我不希望滚动条在点击时改变它的值;我只想收到一个事件,说“用户请求向上滚动块”或“用户请求向下滚动一个单元”。有谁知道一种方法来做到这一点?
顺便说一句,看起来BasicScrollBarUI$TrackListener.mousePressed(MouseEvent)
处理点击,它总是调用scrollbar.setValue(newValue)
。所以,我可能是出于运气:(
也许有一种方法用SWT滚动条来做到这一点的?
不幸的是,那些将不会削减它。鼠标事件直接从'Component.processMouseEvent()'调用''BasicScrollBarUI $ TrackListener.mousePressed()',它总是调用'scrollbar.setValue(newValue)'。我不确定这是否有一个干净的方法;我可能必须继承'BasicScrollBarUI'并覆盖一些方法。这可能不会在不同版本的Java之间非常兼容:( –