Подвижные бары со значением с использованием Java - PullRequest
3 голосов
/ 20 мая 2011

Я хочу создать бар со значением.Если я перемещу круг, то значение в поле должно измениться.Как я могу это сделать?Вот снимок экрана.Как я могу добиться этого?

Что-то похожее на это тоже нормально.Пожалуйста, помогите мне с этим.Заранее спасибо :)

enter image description here

Ответы [ 3 ]

9 голосов
/ 20 мая 2011

SpinSlider может быть полезным примером.

Добавление: Вот пример использования подходящей строки формата для JSpinner.NumberEditor.

Добавление: Вы можете изменитьцвет ползунка путем переопределения paintTrack(), как показано здесь .

SpinSlider image

import java.awt.EventQueue;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

/** @see https://stackoverflow.com/questions/6067898 */
public class SpinSlider extends JPanel {

    public static void main(String args[]) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame f = new JFrame("SpinSlider!");
                f.add(new SpinSlider());
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.pack();
                f.setVisible(true);
            }
        });
    }

    public SpinSlider() {
        this.setLayout(new FlowLayout());
        final JSpinner spinner = new JSpinner();
        final JSlider slider = new JSlider();
        slider.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JSlider s = (JSlider) e.getSource();
                spinner.setValue(s.getValue());
            }
        });
        this.add(slider);
        spinner.setModel(new SpinnerNumberModel(50, 0, 100, 1));
        spinner.setEditor(new JSpinner.NumberEditor(spinner, "0'%'"));
        spinner.addChangeListener(new ChangeListener() {
            @Override
            public void stateChanged(ChangeEvent e) {
                JSpinner s = (JSpinner) e.getSource();
                slider.setValue((Integer) s.getValue());
            }
        });
        this.add(spinner);
    }
}
5 голосов
/ 20 мая 2011

Чтобы создать панель со значением (ползунком) в Java, вы можете использовать класс JSlider.Когда вы создаете экземпляр этого класса, вы можете указать все параметры, как min.и макс.значение, размер шага и т. д.

Вы можете добавить ChangeListener к ползунку.Этот Changelistener должен реализовывать метод stateChanged(), и в этом методе вы можете изменить значение, отображаемое в текстовом поле, в зависимости от положения ползунка.

1 голос
/ 20 мая 2011

В Java Swing вы можете использовать JSlider (который уже имеет желаемую модель и поведение), а затем настроить его пользовательский интерфейс

...