[英]refresh 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();
}
}
您将不得不再次调用repaint()方法。 否则,paintComponent方法将不会被调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.