java - 如何使 JSliders 仅显示四肢

标签 java swing margin jslider

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

最佳答案

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

这可以使用 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);
<小时/>

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

您可以通过使用客户 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);
    }
});

关于java - 如何使 JSliders 仅显示四肢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8894595/

相关文章:

java - 检查方法是否被递归调用的正确方法

listview - Flutter:防止边缘削波

html - Chrome 中两个垂直布局的 div 之间的 1px 边距(请阅读详细信息)

java - JScrollPane 中的 JEditorPane 具有修复背景图像

java - "public void actionPerformed"中如何使用JLabel

css - 为什么此图像不以边距自动居中?

java - 比较 ArrayList 中的 float

java - 测试时如何在 Controller 内 Autowiring Spring bean?

java - Android:保存 ListView 项目并加载/添加更多

java - 如何通过文本 Pane 隐藏 Swing 加速器?