JAVA – APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Timer Based Animation FACULDADE DE TECNOLOGIA SENAC PELOTAS Nome do aluno: Danilo Antunes Rizzo Identificação da Turma: 3º Sem. ADS Noite Data: 13/05/2010 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS 1 Nome da Propriedade 1 Timer Based Animation 1.1 Introdução e Funcionamento Está propriedade exibe uma animação gráfica baseada em um timer pré definido no código é uma animação bem simples somente um circulo oscila seu tamanho demonstrando uma intermitência continua. 1.2 Código da aplicação package TimerBasedAnimation; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.geom.Ellipse2D; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class TimerBasedAnimation extends JPanel implements ActionListener { private Ellipse2D.Float ellipse = new Ellipse2D.Float(); private double esize; private double maxSize = 0; private boolean initialize = true; Timer timer; ActionListener updateProBar; public TimerBasedAnimation() { setXY(20 * Math.random(), 200, 200); timer = new Timer(20, this); timer.setInitialDelay(190); timer.start(); } public void setXY(double size, int w, int h) { esize = size; ellipse.setFrame(10, 10, size, size); } Faculdade Senac Pelotas Página 2 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS public void reset(int w, int h) { maxSize = w / 10; setXY(maxSize * Math.random(), w, h); } public void step(int w, int h) { esize++; if (esize > maxSize) { setXY(1, w, h); } else { ellipse.setFrame(ellipse.getX(), ellipse.getY(), esize, esize); } } public void render(int w, int h, Graphics2D g2) { g2.setColor(Color.BLUE); g2.draw(ellipse); } public void paint(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2.setRenderingHints(rh); Dimension size = getSize(); if (initialize) { reset(size.width, size.height); initialize = false; } this.step(size.width, size.height); render(size.width, size.height, g2); } public void actionPerformed(ActionEvent e) { repaint(); } public static void main(String[] args) { JFrame frame = new JFrame("TimerBasedAnimation"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(new TimerBasedAnimation()); frame.setSize(350, 250); frame.setLocationRelativeTo(null); frame.setVisible(true); } } Faculdade Senac Pelotas Página 3 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS 1.3 Propriedades utilizadas Package java.awt.color - Fornece classes para espaços de cor. Ele contém uma implementação de um espaço de cores com base na International Color Consortium (ICC) Perfil Format Specification, versão 3.4, 15 de agosto de 1997. Ele também contém perfis de cor com base no perfil ICC Format Specification. A classe Dimension encapsula a largura e a altura de um componente (em número inteiro de precisão) em um único objeto. A classe está associada com determinadas propriedades de componentes. Vários métodos definidos pela classe Component eo retorno interface LayoutManager um objeto Dimension. Normalmente os valores de largura e altura são inteiros não-negativos. Os construtores que permitem que você crie uma dimensão não impedi-lo de fixação de um valor negativo para essas propriedades. Se o valor da largura ou altura é negativa, o comportamento de alguns métodos definidos por outros objetos é indefinido. A classe Graphics é a classe base abstrata para todos os contextos gráficos que permitem que um aplicativo para desenhar sobre os componentes que são realizados em vários dispositivos, bem como sobre as imagens fora da tela. Um objeto Graphics encapsula informações sobre o estado necessário para tornar as operações básicas que suporta Java. Esta informação do estado inclui as seguintes propriedades: A classe awt.event.ActionEvent - Instância um acontecimento semântico que indica que uma ação componente definido ocorreu. Este evento de alto nível é gerado por um componente (como um botão) quando a ação ocorre componente específico (como sendo pressionado). O evento é transmitido para cada objeto ActionListener que se cadastram para receber tais eventos usando o método do componente addActionListener. Foram utilizadas também variáveis encapsuladas como “esize, maxSize, initialize” estas variáveis são privadas e por isso não podem ser acessadas por outras classes. Existem vários métodos com e sem retorno para o principal como, por exemplo, de método com retorno o “public void setXY(double size, int w, int h)” e sem retorno o “public TimerBasedAnimation()”. 1.4 Visualização da Ferramenta em Funcionamento Faculdade Senac Pelotas Página 4 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS 1.5 Conclusão Na implementação deste código percebi várias bibliotecas cujo as quais nunca havia trabalhado nem visto ainda. A implementação do código é muito diferente do que havia visto até agora e por isso ficou um pouco difícil obter “somar” conhecimento ao que já havia feito e visto, no entanto com muita pesquisa consegui concluir de que o código trata-se de uma animação, não consegui entender bem outras, e também deu para ver que numa imagem pequena com pouco recurso tem por trás de um código não tão fácil te fazer e entender no meu ponto de vista, no inicio gerou um pouco de dificuldade, mas aos pouco foi fluindo, tirando algumas duvidas. Faculdade Senac Pelotas Página 5