访问 Swing JSlider 的拇指/手柄/旋钮

发布于 2024-11-15 07:17:35 字数 163 浏览 6 评论 0原文

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

我可以硬着头皮在固定的地方创建一个标签。不断更新它,但我想显示手柄上方(或下方)的值。

Basically I want to display the current value pointed to by the slider handle when in motion (either via mouse or keyboard). I can easily get the current value by adding a new ChangeListener & overriding stateChanged method. But I cant seem to get the current location of the handle.

I can just bite the bullet and create a label at a constant place & update it continuously but I want to display the value just above (or below) the handle.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

微暖i 2024-11-22 07:17:35

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

Not an good or very flexible solution but maybe you can implement your own SliderUI. E.g. using the already defined BasicUI you can access the field thumbRect which contains the values you need.

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);
  }
});
み格子的夏天 2024-11-22 07:17:35

如果Nimbus 外观和感觉是一个选项,那么一个实时可以在相关 UI 默认值中指定值的显示:

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

If the Nimbus Look and Feel is an option, a live display of the value can be specified in the relevant UI default:

UIManager.getLookAndFeelDefaults().put("Slider.paintValue", true);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文