Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
刷新重绘()JAVA2D_Java_Eclipse_Graphics2d - Fatal编程技术网

刷新重绘()JAVA2D

刷新重绘()JAVA2D,java,eclipse,graphics2d,Java,Eclipse,Graphics2d,我在重新执行repaint()时遇到问题,我可以旋转图像,但当我停止它(setRuletaGirando(false))并将前一个方法的值更改为true时,它不会再次旋转 绘制图像并旋转此 public void paintComponent(Graphics g) { // se cargan las imagenes BufferedImage ruleta = cargarImagen("src/imagenes/Ruleta.png"); BufferedIma

我在重新执行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();
    }

}

您必须再次调用repaint()方法。否则将不会调用paintComponent方法