2011-03-20 69 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。 :)