Таймер и JSlider с изображениями

Это часть моего кода, и он не работает, потому что он продолжает говорить, что не может найти символ в моем ActionListener, Я не знаю, как заставить это работать.

Так что в основном я пытаюсь сделать так, чтобы изображения из 1-8.png двигались в зависимости от того, где находится ползунок и IDK, как:

private static JLabel value;
private static ImageIcon image;
private static Timer timer;
private static final int delay = 2000;
private static int newDelay;
private static int i = 1;

    timer = new Timer(delay, new ActionListener() {
        public void actionPerformed(ActionEvent e) {
        // makes the image at i appear and then goes to 2 and so on until i i = 8 and will return a 1 after. Will keep on doing so                                
            value.setIcon(new ImageIcon(i + ".png"));   
            i++;

            if(i == 8) {
            i = 1;
            }
        } 
    });
    timer.start();


}


private static class SliderChange implements ChangeListener {

    public void stateChanged(ChangeEvent event) {

        JSlider source = (JSlider) event.getSource();
        // while it is adjusting timer stops and gets the value of where the slider hits and the newDelay will be the new timer time. (So if they drag slider to 6, delay(which is 2000) will be divided by 6 to get new time
        if (!source.getValueIsAdjusting()) {
            timer.stop();
            value.setIcon(new ImageIcon(i + ".png"));
            newDelay = (delay/(int)source.getValue());
            timer = new Timer(newDelay, new Actionlistener());  
            timer.start();
        }

    }

}

Но это не работает. Как я могу это исправить?

Это указывает на эту строку, говоря, что есть ошибка:

timer = new Timer(newDelay, new Actionlistener());

1 ответ

Я не уверен, что действительно необходимо воссоздать Timer каждый раз. Вместо этого остановите это, установите это delay свойство и перезапустите его

private static class SliderChange implements ChangeListener {

    public void stateChanged(ChangeEvent event) {

        JSlider source = (JSlider) event.getSource();
        // while it is adjusting timer stops and gets the value of where the slider hits and the newDelay will be the new timer time. (So if they drag slider to 6, delay(which is 2000) will be divided by 6 to get new time
        if (!source.getValueIsAdjusting()) {
            timer.stop();
            value.setIcon(new ImageIcon(i + ".png"));
            newDelay = (delay/(int)source.getValue());
            timer.setDelay(newDelay);
            timer.start();
        }

    }

}

Проблема в timer = new Timer(newDelay, new Actionlistener()); пытается создать экземпляр interface без выполнения требований interface, что сбивает с толку компилятор

Другие вопросы по тегам