обновить перекрасить () JAVA2D - PullRequest
0 голосов
/ 07 мая 2018

У меня проблемы с повторным выполнением 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();
    }

}

1 Ответ

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

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

...