如何使 JSliders 仅显示四肢

发布于 2024-12-27 10:58:27 字数 132 浏览 1 评论 0原文

假设我有一个从 0 到 100 的水平 JSlider。我想做的是: - 将主要间距设置为 10,次要间距设置为 5,但数字不应该可见 - 四肢的值(0 和 100)应该是可见的 - 当我移动定位箭头时,我希望在鼠标光标旁边有一个标签来告诉我实际值。

Let's say I have a horizoltal JSlider from 0 to 100. What i want to do is:
- set major spacing to 10 and minor to 5 but the digits shouldn't be visible
- the values of extremities (0 and 100) should be visible
- when I move the positioning arrow, I want to have a label next to the mouse cursor that tells me the actual value.

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

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

发布评论

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

评论(1

栖迟 2025-01-03 10:58:27

将主要间距设置为 10,次要间距设置为 5,但数字不应该是
可见 - 四肢的值(0 和 100)应该可见

这可以使用 JSlider 的一些方法轻松完成,例如,

JSlider slider = new JSlider(JSlider.VERTICAL, 0, 100, 0);
slider.setMinorTickSpacing(5);
slider.setMajorTickSpacing(10);
slider.setPaintTicks(true);
Hashtable<Integer, JLabel> labels = new Hashtable<Integer, JLabel>();
labels.put(0, new JLabel("0"));
labels.put(100, new JLabel("100"));
slider.setLabelTable(labels);
slider.setPaintLabels(true);

当我移动定位箭头时,我想要在旁边有一个标签
鼠标光标告诉我实际值。

您可以通过使用客户 sliderUI 并覆盖它的 PaintThumb 方法来实现类似的事情。这并不完全是您想要的,但您可以尝试以下操作:

slider.setUI(new BasicSliderUI(slider) {
    public void paintThumb(Graphics g) {
        super.paintThumb(g);
        g.setColor(Color.RED);
        g.drawString(slider.getValue() + "", thumbRect.x, thumbRect.y + thumbRect.height);
    }
});

set major spacing to 10 and minor to 5 but the digits shouldn't be
visible - the values of extremities (0 and 100) should be visible

This can be easily done using some methods of JSlider like,

JSlider slider = new JSlider(JSlider.VERTICAL, 0, 100, 0);
slider.setMinorTickSpacing(5);
slider.setMajorTickSpacing(10);
slider.setPaintTicks(true);
Hashtable<Integer, JLabel> labels = new Hashtable<Integer, JLabel>();
labels.put(0, new JLabel("0"));
labels.put(100, new JLabel("100"));
slider.setLabelTable(labels);
slider.setPaintLabels(true);

when I move the positioning arrow, I want to have a label next to the
mouse cursor that tells me the actual value.

You can achieve similar thing by using customer sliderUI and overriding it's paintThumb method. This is not exactly you want but you can try this:

slider.setUI(new BasicSliderUI(slider) {
    public void paintThumb(Graphics g) {
        super.paintThumb(g);
        g.setColor(Color.RED);
        g.drawString(slider.getValue() + "", thumbRect.x, thumbRect.y + thumbRect.height);
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文