Accédez au pouce / Poignée / Bouton de JSlider Swing
Question
En gros je veux afficher la valeur actuelle pointée par la poignée du curseur lorsqu'il est en mouvement (soit par la souris ou le clavier). Je peux facilement obtenir la valeur actuelle en ajoutant une nouvelle méthode ChangeListener et remplaçant stateChanged. Mais je ne peux pas sembler obtenir l'emplacement actuel de la poignée.
Je peux juste mordre la balle et créer une étiquette à un endroit constant et le mettre à jour en permanence, mais je veux afficher la valeur juste au-dessus (ou en dessous) de la poignée.
La solution
Pas une bonne ou d'une solution très flexible, mais vous pouvez peut-être mettre en œuvre votre propre SliderUI
. Par exemple. en utilisant le BasicUI
déjà défini, vous pouvez accéder au thumbRect
de champ qui contient les valeurs dont vous avez besoin.
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);
}
});
Autres conseils
Si le Nimbus look and feel est une option , un affichage en direct de la valeur peut être spécifiée dans la valeur par défaut de l'interface utilisateur concerné:
UIManager.getLookAndFeelDefaults().put("Slider.paintValue", true);