Criando animações utilizando Paint e Thread

Esta dica java mostra como criar animações simples utilizando o método paint(Graphics g) e thread.

Criando animações utilizando Paint e Thread

 

Esta dica java mostra como criar animações simples utilizando o método paint(Graphics g) e thread.

 

 

import java.awt.Color;
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.awt.Graphics;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.awt.Insets;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.Timer;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.TimerTask;</SPAN>

<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.swing.JFrame;</SPAN>

<B><SPAN lang=EN-US >public class </SPAN></B><SPAN lang=EN-US >Animate </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >JFrame {</SPAN>

<SPAN lang=EN-US >  </SPAN><B><SPAN lang=EN-US >private static int </SPAN></B><SPAN lang=EN-US >DELAY = </SPAN><SPAN lang=EN-US >100</SPAN><SPAN lang=EN-US >;</SPAN>

<SPAN lang=EN-US >  </SPAN><SPAN lang=EN-US >Insets insets;</SPAN>

<SPAN lang=EN-US >  </SPAN><SPAN lang=EN-US >Color colors[] = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN,</SPAN>
<SPAN lang=EN-US >Color.BLUE, Color.MAGENTA };</SPAN>

<SPAN lang=EN-US >  </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >paint(Graphics g) {</SPAN>
<B><SPAN lang=EN-US >super</SPAN></B><SPAN lang=EN-US >.paint(g);</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(insets == </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) {</SPAN>
<SPAN lang=EN-US >insets = getInsets();</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >x = insets.left;</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >y = insets.top;</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >width = getWidth() - insets.left - insets.right;</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >height = getHeight() - insets.top - insets.bottom;</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >start = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >steps = colors.length;</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >stepSize = </SPAN><SPAN lang=EN-US >360 </SPAN><SPAN lang=EN-US >/ steps;</SPAN>
<B><SPAN lang=EN-US >synchronized </SPAN></B><SPAN lang=EN-US >(colors) {</SPAN>
<B><SPAN lang=EN-US >for </SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >; i < steps; i++) {</SPAN>
<SPAN lang=EN-US >g.setColor(colors[i]);</SPAN>
<SPAN lang=EN-US >g.fillArc(x, y, width, height, start, stepSize);</SPAN>
<SPAN lang=EN-US >start += stepSize;</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >  </SPAN><SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >  </SPAN><B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >go() {</SPAN>
<SPAN lang=EN-US >TimerTask task = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >TimerTask() {</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >run() {</SPAN>
<SPAN lang=EN-US >Color c = colors[</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >];</SPAN>
<B><SPAN lang=EN-US >synchronized </SPAN></B><SPAN lang=EN-US >(colors) {</SPAN>
<SPAN lang=EN-US >System.arraycopy(colors, </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >, colors, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, colors.length - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >colors[colors.length - </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >] = c;</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >repaint();</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >};</SPAN>
<SPAN lang=EN-US >Timer timer = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Timer();</SPAN>
<SPAN lang=EN-US >timer.schedule(task, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, DELAY);</SPAN>
<SPAN lang=EN-US >  </SPAN><SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >  </SPAN><B><SPAN lang=EN-US >public static void </SPAN></B><SPAN lang=EN-US >main(String args[]) {</SPAN>
<SPAN lang=EN-US >Animate f = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Animate();</SPAN>
<SPAN lang=EN-US >f.setSize(</SPAN><SPAN lang=EN-US >200</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >200</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >f.show();</SPAN>
<SPAN lang=EN-US >f.go();</SPAN>
<SPAN lang=EN-US >  </SPAN><SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>

Artigos relacionados