我有一個非常大的數據視圖。我想爲用戶提供一個滾動條,但是我想重寫滾動條按下向上和向下箭頭(或鍵盤上的上下鍵)的標準方式,以及點擊頁面上的軌道區域以及向下翻頁。這是因爲數據流入視圖,而JScrollBar的「最小/最大/值」模型不適用於此。如何防止JScrollBar滾動頁面向下的特定事件?
處理這些鼠標或按鍵事件的標準方式是滾動條的值可以通過「單位增量」(較小的值)或「塊增量」(較大的值)進行調整。 我不希望滾動條在點擊時改變它的值;我只想收到一個事件,說「用戶請求向上滾動塊」或「用戶請求向下滾動一個單元」。有誰知道一種方法來做到這一點?
順便說一句,看起來BasicScrollBarUI$TrackListener.mousePressed(MouseEvent)
處理點擊,它總是調用scrollbar.setValue(newValue)
。所以,我可能是出於運氣:(
也許有一種方法用SWT滾動條來做到這一點的?
不幸的是,那些將不會削減它。鼠標事件直接從'Component.processMouseEvent()'調用''BasicScrollBarUI $ TrackListener.mousePressed()',它總是調用'scrollbar.setValue(newValue)'。我不確定這是否有一個乾淨的方法;我可能必須繼承'BasicScrollBarUI'並覆蓋一些方法。這可能不會在不同版本的Java之間非常兼容:( –