Заставьте JSlider постоянно двигаться - PullRequest
0 голосов
/ 10 мая 2018

У меня есть этот кусок кода:

Timer timer;
ActionListener listener;
listener = new ActionListener() {
    int counter = 0;

    public void actionPerformed(ActionEvent ae) {
        counter++;
        jSlider1.setValue(counter);
        jSlider2.setValue(counter);
        jSlider3.setValue(counter);
        jSlider4.setValue(counter);
        jSlider5.setValue(counter);
        jSlider6.setValue(counter);
        jSlider7.setValue(counter);
        jSlider8.setValue(counter);
        jSlider9.setValue(counter);
        jSlider10.setValue(counter);
    }
};
timer = new Timer(50, listener);
timer.start();

JSLider перемещается автоматически.

Как сделать так, чтобы когда слайдер доходил до конца, он возвращался к началу?

1 Ответ

0 голосов
/ 10 мая 2018

обратный счетчик

Итак, вам нужно некоторое значение, которое диктует сумму, которую нужно сложить / вычесть из counter на каждом tick. Вам, вероятно, также необходимо знать минимальный / максимальный диапазон, через который может проходить counter.

С этой целью простое значение delta, которое добавляется к counter и может быть инвертировано (+/-), когда counter достигает любого конца доступного диапазона.

Может быть, что-то вроде ...

listener = new ActionListener() {
    int counter = 0;
    int delta = 1;

    int min = 0;
    int max = 100;

    public void actionPerformed(ActionEvent ae) {
        counter += delta;
        if (counter < min || counter > max) {
            delta *= -1;
        }
        counter = Math.min(max, Math.max(min, counter));

        jSlider1.setValue(counter);
        jSlider2.setValue(counter);
        jSlider3.setValue(counter);
        jSlider4.setValue(counter);
        jSlider5.setValue(counter);
        jSlider6.setValue(counter);
        jSlider7.setValue(counter);
        jSlider8.setValue(counter);
        jSlider9.setValue(counter);
        jSlider10.setValue(counter);
    }

};
...