Ottieni l'accesso al pollice/manico/manopola di swing di JSlider
Domanda
Fondamentalmente voglio visualizzare il valore corrente puntato dalla maniglia del cursore in movimento (tramite mouse o tastiera). Posso facilmente ottenere il valore corrente aggiungendo un nuovo metodo di Statechanged di Changelistener e prevalente. Ma non riesco a ottenere la posizione attuale del manico.
Posso solo mordere il proiettile e creare un'etichetta in un luogo costante e aggiornarlo continuamente, ma voglio visualizzare il valore appena sopra (o sotto) la maniglia.
Soluzione
Non è una soluzione buona o molto flessibile, ma forse puoi implementare la tua SliderUI
. Ad esempio usando il già definito BasicUI
Puoi accedere al campo thumbRect
che contiene i valori di cui hai bisogno.
slider.setUI(new BasicSliderUI(slider) {
public void paintThumb(Graphics g) {
super.paintThumb(g);
g.setColor(Color.black);
g.drawString(Integer.toString(slider.getValue()), thumbRect.x, thumbRect.y + thumbRect.height);
}
});
Altri suggerimenti
Se la Nimbus aspetto è un'opzione, una visualizzazione in diretta del valore può essere specificata nell'interfaccia utente pertinente:
UIManager.getLookAndFeelDefaults().put("Slider.paintValue", true);