Обновить repaint () JAVA2D

У меня проблемы с повторным выполнением repaint (), я могу повернуть изображение, но когда я останавливаю его (setRuletaGirando (false)) и меняю значение предыдущего метода на true, оно не поворачивается снова.

нарисуйте изображение и поверните его

public void paintComponent(Graphics g) {

    // se cargan las imagenes
    BufferedImage ruleta = cargarImagen("src/imagenes/Ruleta.png");
    BufferedImage flecha = cargarImagen("src/imagenes/Flecha.png");

    //posicion en la que se ubicara la imagen a rotar
    AffineTransform at = AffineTransform.getTranslateInstance(50, 50);

    //el metodo posiciones devuelve el entero (angulo) en la posicion iteradorimagen ,

    at.rotate(Math.toRadians(posiciones(iteradorImagen++)),ruleta.getWidth()/2,ruleta.getHeight()/2);

    Graphics2D ruleta2D=(Graphics2D) g;

    ruleta2D.setColor(Color.GREEN.darker());

    ruleta2D.fillRect(0, 0, this.getWidth(), this.getHeight());

    ruleta2D.drawImage(ruleta, at, null);
    ruleta2D.drawImage(flecha, 275, 85,50,50,this);

    // este metodo propio de la clase graphics2D es el que refresca el panel y 
    //"hace girar la imagen"(repaint)
    if (ruletaGirando) {
        repaint();
    }  
   }
   }
}

Метод решения проблемы

    public void initGUI() { 

        ruleta = new PanelRuleta();
        this.add(ruleta);
        Thread t = new Thread(){
           public synchronized void run() {
                try{
                    ruleta.setRuletaGirando(true);
                    Thread.sleep(4000);
                    ruleta.setRuletaGirando(false);
                    Thread.sleep(100);
                    ruleta.setRuletaGirando(true);
                }catch(InterruptedException e){}
            }
        };

        t.start();
    }

}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
31
1

Ответы 1

Вам придется снова вызвать метод repaint (). В противном случае метод paintComponent не будет вызван.

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