Pergunta

Eu tenho uma barra de progresso que herda de JSlider para fornecer destacando funcionalidade. Destaques pode ser adicionado ao controle deslizante em um ponto (e uma cor) e estes são então pintados no controle. Da seguinte forma:

http://img101.imageshack.us/img101/7608/sliderexample.png

O problema é que eu não posso começar a destaques no lugar certo, eles precisam estar no mesmo local que os marcadores. Eu também não sei como recuperar as margens esquerda e direita para onde os marcadores de início e fim.

Existe uma maneira de obter as coordenadas de cada marcador? Ou talvez uma maneira melhor de realizar esta tarefa?

Muito obrigado!

Foi útil?

Solução

Esta é dependente do Look & Feel e há uma boa chance de que não existem quaisquer marcadores em tudo quando o usuário utiliza algum L não-padrão & F. Na verdade, o problema é tanto uma extensão da funcionalidade e realização gráfica de modo que você pode ter que tocar ambos, JSlider e SliderUI.

Note os seguintes métodos:

javax.swing.JSlider.getMajorTickSpacing() 
javax.swing.JSlider.getMinorTickSpacing() 

Além disso, ele pode ajudar a olhar para javax.swing.plaf.SliderUI e as classes que se estendem-lo, especialmente

javax.swing.plaf.basic.BasicSliderUI.paintTicks(java.awt.Graphics)
javax.swing.plaf.basic.BasicSliderUI.xPositionForValue(int)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top