2011-03-20 5 views
7

JScrollPane 안에 스크롤바의 두께를 조절하는 방법이 있습니까? 기본값은 일종의 clunky입니다.스크롤 막대 두께 설정

+0

기본 모양과 느낌 (금속)에서 작동하는보다 완벽한 솔루션을 추가했습니다. 저는 이것이 오래된 질문이라는 것을 압니다. 그러나 이것을 알아 내려고 노력할 때 우연히 만났습니다. 그래서 다시 돌아와서 생각해 보았습니다. – xtempore

답변

15

신속하고도 더러운 해결책은 폭/높이를 명시 적으로 예를 들어 0으로 설정하는 것입니다.

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

다른 방법을 통해 화소 (10)는 적절한 ScrollBarUI을 제공하는 것이다.

+0

땡땡! 감사! – Sinaesthetic

+0

감사! 그리고 스크롤바 위/아래 버튼의 크기를 어떻게 설정합니까? – rustyx

+0

이것은 방향 버튼에 이상한 것들을합니다. 대체 솔루션에 대한 내 대답은 아래 참조하십시오. – xtempore

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' –

-1

나를위한 가장 간단한 방법은 jquery.jscrollpane.css 파일을 직접 편집하는 것이 었습니다. 너비는 .jspVerticalBar입니다. :)