2011-11-21 15 views
11

Ho bisogno di progettare questa barra di scorrimento per tutti i miei scrollpanes:Design personalizzato JScollPane Java Swing

enter image description here

Con Java Swing. Sto usando Netbeans IDE. Qual è la soluzione più semplice?

Grazie mille.

saluti

+0

i non ti ho capito. uno scrollpan inserisce automaticamente una barra di scorrimento quando la dimensione dell'elemento che contiene è compromessa. – gprathour

risposta

16

È possibile personalizzare l'aspetto di un componente Swing di impostando un'interfaccia utente personalizzata. Nel caso di una barra di scorrimento riquadro di scorrimento, si fa

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

dove MyScrollBarUI è derivato da javax.swing.plaf.basic.BasicScrollBarUI. Per fare questo per tutte le barre di scorrimento (non solo in JScrollPane casi), chiamare

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

prima di creare qualsiasi componenti Swing.

In MyScrollBarUI, di ignorare i seguenti metodi:

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 
    } 
} 

tua barra di scorrimento è graficamente molto semplice, quindi non dovrebbe essere troppo difficile da attuare.

+1

Ottima risposta grazie mille –

+0

Assicurati di sovrascrivere il 'vuoto protetto paintTrack (Graphics g, JComponent c, Rectangle trackBounds) 'e' paintThumb' (stessa firma del metodo) in [BasicScrollBarUI] (http://docs.oracle.com/javase/6/docs/api/javax/swing/plaf/ basic/BasicScrollBarUI.html) o potresti non vedere nulla. – Nateowami

+0

Sarebbe possibile non hardcode 'estende BasicScrollBarUI' ma estendere la classe UI barra di scorrimento attualmente utilizzata? Mi piace 'estende scrollBar.getUI(). GetClass()'? – Bowi

1

1) di override JToolBar

2) la maggior parte di Custom Look and Feel overrode che

+1

la relazione tra barra degli strumenti e barra di scorrimento è quella ... ;-) Plus (dopotutto è lunedì mattina): si sostituiscono i metodi, le classi vengono estese (o implementate) – kleopatra

0

Non dimenticare che se si prevede di utilizzare l'UIManager per ignorare tutte le barre di scorrimento come questo

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

quindi la classe SimpleScrollBarUI must avere il metodo createUI, vale a dire:

public class SimpleScrollBarUI extends BasicScrollBarUI { 

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

    //... 

}