Java Swing - Disegno marcatori su JSlider
Domanda
Ho una barra di avanzamento che eredita da JSlider per fornire evidenza le funzionalità. In evidenza possono essere aggiunti al cursore in un punto (e un colore) e questi vengono poi dipinte sul controllo. Come segue:
http://img101.imageshack.us/img101/7608/sliderexample.png
Il problema è che non riesco a ottenere il Highlights al posto giusto, hanno bisogno di essere nella stessa posizione dei marcatori. Anche io non so come recuperare i margini sinistro e destro al punto in cui i marcatori di inizio e fine.
Esiste un modo per ottenere le coordinate di ogni indicatore? O forse un modo migliore di svolgere questo compito?
Molte grazie!
Soluzione
Questo dipende il look & feel e c'è una buona probabilità che non ci sono i marcatori a tutti quando l'utente utilizza un po 'di L non standard & F. In realtà, il problema è sia un'estensione di funzionalità e realizzazione grafica in modo da avere a toccare sia, JSlider e SliderUI.
Si noti i seguenti metodi:
javax.swing.JSlider.getMajorTickSpacing()
javax.swing.JSlider.getMinorTickSpacing()
Inoltre, può aiutare a guardare in javax.swing.plaf.SliderUI
e le classi estenderla, in particolare
javax.swing.plaf.basic.BasicSliderUI.paintTicks(java.awt.Graphics)
javax.swing.plaf.basic.BasicSliderUI.xPositionForValue(int)