2012-08-13 64 views
1

我正在研究一個包含滾動條的程序。 在程序中,我得到了一個500px的可滾動字段,我希望滾動條每50px滾動一次。 所以我得到10頁。 我不希望能夠顯示50%的頁面,我只希望能夠一次顯示1頁。 那麼如何更改滾動尺寸?JScrollbar滾動每50像素

或者還有更好的方法來實現這個目標嗎?

映入眼簾, 而在此先感謝 布拉姆

回答

1

與您JScrollPane

scrollPane.getVerticalScrollBar().setUnitIncrement(50); 

這有助於當你與JScrollPane按鈕向上/向下滾動,但你可以展現頁面的一半試試這個用鼠標移動旋鈕。

作爲替代方案,我可以建議使用AdjustmentListener來手動調整旋鈕位置並手動移動scrollPane值。

scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() 
    { 
     public void adjustmentValueChanged(AdjustmentEvent e) 
     { 
      scrollPane.getVerticalScrollBar().setValue(e.getValue()/50 * 50); 
     } 
    }); 

但我認爲這不是個好主意。可能有人會提出更好的辦法。

4

您可以進行滾動領域實現Scrollable接口,其中聲明瞭兩個方法滾動領域將用來決定它能走多遠滾動,getScrollableUnitIncrement(滾動輪,點擊滾動箭頭)和getScrollableBlockIncrement(點擊滾動條的軌道) 。

如果你真的永遠只能將希望它是50,你可以用

jScrollPane.getVerticalScrollBar().setUnitIncrement(50); 
jScrollPane.getVerticalScrollBar().setBlockIncrement(50); 

但是,如果用戶然後拖動滾動條,直到顯示半頁(我不認爲這種行爲可以很容易地改變),滾動仍然會跳躍50個像素,並顯示下一頁的一半......如果你實現Scrollable,你可以基於當前可見的滾動量。

+0

Thx爲此,因爲行爲不能改變,很容易可以使用卡片佈局和滾動卡片? 我知道它可以用按鈕來改變卡片,所以這可以用滾動條來完成嗎? – Bram 2012-08-13 14:44:49

+1

@Bram從來沒有親自做過,但似乎有可能。您不想使用滾動窗格,而是使用'AdjustmentListener'監聽的獨立'JScrollBar'。當收聽者被通知時,找出合適的卡片並顯示出來。當然,你必須配置滾動條才能知道你有多少張卡。 – 2012-08-13 15:05:57

+0

Thx會嘗試:) – Bram 2012-08-13 15:08:10