Как сделать видимыми только конечности для JSliders - PullRequest
0 голосов
/ 17 января 2012

Допустим, у меня есть горизонтальный JSlider от 0 до 100. Я хочу сделать следующее: - установить основной интервал на 10, а младший на 5, но цифры не должны быть видны - значения конечностей (0 и 100)должен быть виден - когда я перемещаю позиционирующую стрелку, я хочу, чтобы рядом с курсором мыши была метка, указывающая фактическое значение.

1 Ответ

1 голос
/ 17 января 2012

установить большой интервал в 10 и младший в 5, но цифры не должны быть visible - значения конечностей (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);
    }
});
...