2011-11-21 41 views
11

necesito para diseñar esta barra de desplazamiento para todos mis scrollpanes:diseño personalizado JScollPane Java Swing de

enter image description here

Con Java Swing. Estoy usando Netbeans IDE. ¿Cuál es la solución más simple?

Muchas gracias.

Saludos

+0

i no te entendí. un panel de desplazamiento inserta automáticamente una barra de desplazamiento cuando el tamaño del elemento que contiene se ve comprometido. – gprathour

Respuesta

16

Usted puede personalizar el aspecto de un componente Swing por establecer una interfaz de usuario personalizada. En el caso de la barra de desplazamiento de un panel de desplazamiento, lo hace

scrollPane.getVerticalScrollBar().setUI(new MyScrollBarUI()); 

donde MyScrollBarUI se deriva de javax.swing.plaf.basic.BasicScrollBarUI. Para hacer esto para todas las barras de desplazamiento (no sólo en JScrollPane casos), llame

UIManager.put("ScrollBarUI", "my.package.MyScrollBarUI"); 

antes de crear los componentes Swing.

En MyScrollBarUI, se anulan los métodos siguientes:

public class MyScrollBarUI extends BasicScrollBarUI { 

    @Override 
    protected void paintTrack(Graphics g, JComponent c, Rectangle trackBounds) { 
     // your code 
    } 

    @Override 
    protected void paintThumb(Graphics g, JComponent c, Rectangle thumbBounds) { 
     // your code 
    } 
} 

Su barra de desplazamiento es gráficamente muy simple, por lo que no debería ser demasiado difícil de implementar.

+1

Gran respuesta muchas gracias –

+0

Asegúrese de anular 'vacío protegido paintTrack (Gráficos g, JComponent c, Rectangle trackBounds) 'y' paintThumb' (misma firma de método) en [BasicScrollBarUI] (http://docs.oracle.com/javase/6/docs/api/javax/swing/plaf/ basic/BasicScrollBarUI.html) o es posible que no vea nada. – Nateowami

+0

¿Sería posible no hardcode 'extends BasicScrollBarUI' sino extender la clase UI de barra de desplazamiento que se usa actualmente? Al igual que 'extends scrollBar.getUI(). GetClass()'? – Bowi

1

1) de anulación JToolBar

2) la mayor parte de Custom Look and Feel hicieron caso omiso de que

+1

la relación de la barra de herramientas a la barra de desplazamiento es que ... ;-) Además (después de todo es lunes por la mañana): anula los métodos, las clases se extienden (o implementan) – kleopatra

0

No se olvide que si usted va a utilizar el UIManager para anular todas las barras de desplazamiento como éste

UIManager.put("ScrollBarUI", "my.custom.SimpleScrollBarUI"); 

entonces su clase SimpleScrollBarUI imprescindible tener el método createUI, es decir:

public class SimpleScrollBarUI extends BasicScrollBarUI { 

    public static ComponentUI createUI(JComponent c) { 
     return new SimpleScrollBarUI(); 
    } 

    //... 

}