JAVA – APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Buffered Animation Demo FACULDADE DE TECNOLOGIA SENAC PELOTAS Nome do aluno: Sérgio Haubman Martins Identificação da Turma: ADS 3º Semestre Noite Data: 13/05/2010 Nome da Propriedade 1 Buffered Animation Demo Introdução e Funcionamento Esta propriedade quando compilada gera um círculo de 6 cores com alternância de cores. Código da aplicação package BufferedAnimate; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; 1 import java.awt.Image; import java.awt.Insets; import java.awt.image.BufferedImage; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; public class BufferedAnimate extends JFrame { private static int DELAY = 100; Image buffer; Dimension oldSize; Insets insets; Color colors[] = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA }; @Override public void paint(Graphics g) { if ((oldSize == null) || (oldSize != getSize())) { oldSize = getSize(); buffer = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB); } if (insets == null) { insets = getInsets(); } // Calculate each time in case of resize int x = insets.left; int y = insets.top; int width = getWidth() - insets.left - insets.right; int height = getHeight() - insets.top - insets.bottom; int start = 0; int steps = colors.length; int stepSize = 360 / steps; synchronized (colors) { Graphics bufferG = buffer.getGraphics(); bufferG.setColor(Color.WHITE); bufferG.fillRect(x, y, width, height); for (int i = 0; i < steps; i++) { bufferG.setColor(colors[i]); bufferG.fillArc(x, y, width, height, start, stepSize); 2 start += stepSize; } } g.drawImage(buffer, 0, 0, this); } public void go() { TimerTask task = new TimerTask() { public void run() { Color c = colors[0]; synchronized (colors) { System.arraycopy(colors, 1, colors, 0, colors.length - 1); colors[colors.length - 1] = c; } repaint(); } }; Timer timer = new Timer(); timer.schedule(task, 0, DELAY); } public static void main(String args[]) { BufferedAnimate f = new BufferedAnimate(); f.setSize(200, 200); f.setTitle("Buffered"); f.show(); f.go(); } } Propriedades utilizadas import java.awt.Color; // Classe utilizada para manipulação de cores. import java.awt.Dimension; // Classe utilizada para manipular altura e largura do elemento. public class BufferedAnimate extends JFrame // Classe extendida da jFrame que lhe da suporte a arquitetura JFC/Swing private static int DELAY = 100; //Variavel que regula a velocidade de rotação do circulo. Color colors[] = { Color.RED, Color.ORANGE, Color.YELLOW, Color.GREEN, Color.BLUE, Color.MAGENTA }; //Objeto colors q recebe um array de cores. 3 public void paint(Graphics g) Verifica se o elemento tem um tamanho definido, caso não tenha define apartir oldSize = getSize(); int x = insets.left; // Recebe a distancia do objeto ate a borda esquerda da janela int y = insets.top; // Recebe a distancia do objeto ate a borda superior da janela int width = getWidth() - insets.left - insets.right; // Width recebe a largura do elemento menos a distância ate a borda esquerda e menos a distancia ate da borda direita da janela . int height = getHeight() - insets.top - insets.bottom; Height recebe a altura do elemento menos a distância ate a borda superior e menos a distancia ate da borda inferior da janela. int start = 0; // define o ponto inicial; int steps = colors.length; //Recebe o total de cores int stepSize = 360 / steps; //Divide 360 pelo total de cores synchronized (colors) { Recebe todas as cores Graphics bufferG = buffer.getGraphics(); bufferG.setColor(Color.WHITE); //Inicia o objeto com a cor branca bufferG.fillRect(x, y, width, height); Recebe Distancia largura e altura do elemento for (int i = 0; i < steps; i++) { // i vai de o até o total de cores bufferG.setColor(colors[i]); // Muda a cor atual conforme o I passa pelo metodo setColor bufferG.fillArc(x, y, width, height, start, stepSize); Este metodo recebe as distancia do elemento com a borda, sua altura e largura, ponto inicial e a posicao de cada cor. start += stepSize; //incremento para mudança de posição das cores } } g.drawImage(buffer, 0, 0, this); } public static void main(String args[]) { BufferedAnimate f = new BufferedAnimate(); Instância o objeto f.setSize(200, 200); Define uma altura e largura f.setTitle("Buffered"); Define o titulo da janela f.show(); //Mostra a janela f.go(); // Inicia a aplicação } Visualização da Ferramenta em Funcionamento 4 5 Conclusão Conheci a documentação do java que é bastante completa, o trabalho valeu para dar uma revisada nos materiais. 6