2011-03-20 27 views
7

¿Hay alguna manera de ajustar el grosor de la barra de desplazamiento dentro de un JScrollPane? el valor predeterminado es un poco torpe.Establecer grosor de la barra de desplazamiento

+0

He agregado una solución más completa a continuación, que funciona para la apariencia predeterminada (Metal). Sé que esta es una vieja pregunta, pero la encontré cuando estaba tratando de resolver esto, así que pensé en volver y compartir. – xtempore

Respuesta

15

Una solución rápida pero sucia es establecer explícitamente el ancho/alto a, p. 10 píxeles a través de

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

Otra forma sería la de proporcionar un adecuado ScrollBarUI.

+0

bullseye! ¡Gracias! – Sinaesthetic

+0

¡Gracias! ¿Y cómo configuro el tamaño de los botones de la barra de desplazamiento arriba/abajo? – rustyx

+0

Esto hace cosas raras a los botones de dirección. Vea mi respuesta a continuación para una solución alternativa. – xtempore

2
int verticalScrollBarWidthCoefficient = 3; 

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

Lo siguiente se aplica al LNF (Metal) predeterminado.

Si sólo desea establecer un tamaño específico, entonces se puede poner este código antes de crear el JScrollPane (reemplace 40 con el tamaño que prefiera) ...

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

Si desea escalar el barra de desplazamiento basado en el tamaño predeterminado entonces algo como esto (antes de crear el JScrollPane) ...

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

Si desea cambiarlo después de la creación de las cosas JScrollPane son un poco más complejo, pero no es tan malo ...

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

Espero que ayude a alguien.

+0

Esto solo funciona si NO tiene Nimbus LaF. Si lo tiene, la primera forma no tiene efecto y la segunda forma de errores porque 'UIManager.get (" ScrollBar.width ") == null' –

-1

La forma más simple para mí fue editar el archivo jquery.jscrollpane.css directamente. cambiando el ancho de .jspVerticalBar. :)

Cuestiones relacionadas