访问Swing的JSlider的Thumb / Handle / Knob

时间:2011-06-14 17:04:55

标签: java swing handle jslider

基本上我想在运动时(通过鼠标或键盘)显示滑块手柄指向的当前值。我可以通过添加一个新的ChangeListener&来轻松获得当前值。覆盖stateChanged方法。但我似乎无法得到手柄的当前位置。

我可以咬紧牙关,在一个恒定的地方创造一个标签。连续更新它但我想在句柄上方(或下方)显示值。

2 个答案:

答案 0 :(得分:3)

不是一个好的或非常灵活的解决方案,但也许你可以实现自己的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);
  }
});

答案 1 :(得分:1)

如果Nimbus Look and Feel是一个选项,则可以在相关的UI默认值中指定值的实时显示:

UIManager.getLookAndFeelDefaults().put("Slider.paintValue", true);