スイングのjsliderのサム/ハンドル/ノブにアクセスする
質問
基本的に、動いているときにスライダーハンドル(マウスまたはキーボードを介して)を指す現在の値を表示したいと思います。新しい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);
}
});
他のヒント
場合 ニンバスのルックアンドフィール オプションであり、値のライブディスプレイは、関連するUIデフォルトで指定できます。
UIManager.getLookAndFeelDefaults().put("Slider.paintValue", true);
所属していません StackOverflow