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!

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top