基本的には、(マウスまたはキーボードを介して) 動いているときにスライダー ハンドルが指す現在の値を表示したいと考えています。新しい ChangeListener を追加して stateChanged メソッドをオーバーライドすることで、現在の値を簡単に取得できます。しかし、ハンドルの現在の位置を取得できないようです。
弾丸を噛んで一定の場所にラベルを作成し、継続的に更新することができますが、ハンドルのすぐ上 (または下) に値を表示したいと考えています。
優れた、または非常に柔軟なソリューションではありませんが、独自のSliderUI
. たとえば、すでに定義されているを使用して、必要な値を含むBasicUI
フィールドにアクセスできます。thumbRect
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);
}
});
Nimbus Look and Feelがオプションの場合、値のライブ表示を関連するUIのデフォルトで指定できます。
UIManager.getLookAndFeelDefaults().put("Slider.paintValue", true);