我重新执行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();
}
}
答案 0 :(得分:0)
您必须再次调用repaint()方法。否则不会调用paintComponent方法。