2011-03-20 85 views
7

有沒有辦法在JScrollPane內調整滾動條的厚度?默認是笨重的。設置滾動條的厚度

+0

我已經添加了一個更完整的解決方案,適用於默認的外觀和感覺(金屬)。我知道這是一個古老的問題,但當我試圖解決這個問題時,我碰到了它,所以認爲我會回來分享。 – xtempore 2015-11-21 11:52:30

回答

15

一個快速但也很髒的解決方案是將寬度/高度明確地設置爲例如通過

jScrollPane.getVerticalScrollBar().setPreferredSize(new Dimension(10, 0)); 
jScrollPane.getHorizontalScrollBar().setPreferredSize(new Dimension(0, 10)); 

其他方式10個像素將提供合適的ScrollBarUI

+0

靶心!謝謝! – Sinaesthetic 2011-03-20 21:37:54

+0

謝謝!我該如何設置滾動條向上/向下按鈕的大小? – rustyx 2012-02-06 10:33:33

+0

這是方向按鈕怪異的東西。看到我的答案下面的備用解決方案。 – xtempore 2015-11-21 11:53:31

2
int verticalScrollBarWidthCoefficient = 3; 

scrollPane.getVerticalScrollBar().setPreferredSize(new Dimension(
     (int) scrollPane.getVerticalScrollBar().getPreferredSize() 
       .getWidth() * verticalScrollBarWidthCoefficient, 
     (int) scrollPane.getVerticalScrollBar().getPreferredSize().getHeight() 
)); 
2

以下內容適用於默認的LNF(金屬)。

如果你只是想設置一個特定的大小,那麼你就可以創建JScrollPane的(替代40與你喜歡的任何大小)之前,如果你想縮放把這個代碼...

UIManager.put("ScrollBar.width", 40); 

根據(創建JScrollPane的前),那麼像這樣的默認大小滾動條...

UIManager.put("ScrollBar.width", (int) ((int) UIManager.get("ScrollBar.width") * 2.5)); 

如果你想改變它創建JScrollPane的事情後,都比較複雜一點,但不是太糟糕...

int scrollbarSize = <some dynamic value>; 
UIManager.put("ScrollBar.width", scrollbarSize); 
scrollPane.setVerticalScrollBar(scrollPane.createVerticalScrollBar()); 
scrollPane.setHorizontalScrollBar(scrollPane.createHorizontalScrollBar()); 

我希望能幫到別人。

+0

這隻適用於沒有Nimbus LaF的情況。如果你有它,那麼第一種方式沒有效果,第二種方式錯誤,因爲'UIManager.get(「ScrollBar.width」)== null' – 2018-03-09 08:39:19

-1

最簡單的方法是直接編輯0​​文件。改變寬度.jspVerticalBar。 :)