JAVA – APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation FACULDADE DE TECNOLOGIA SENAC PELOTAS Nome do aluno: Paulo Renato S. Veiga Identificação da Turma: 205 Noite Data: 16/05/10 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS 1 Nome da Propriedade FontSizeAnimation 1.1 Introdução e Funcionamento A propriedade escolhida foi uma fonte com animação de tamanho (FontSizeAnimation), ao rodar o código pela JVM, a frase que foi escrita vem aumentando gradativamente seu tamanho. Podemos colocar uma letra, frases ou números, pois todo conteúdo e transformado em strings que será convertido em gráfico através do método paint que recebe como parâmetro a variável g do tipo Graphics, que por sua vez é uma classe que tem base abstrata. A public class FontSizeAnimation extends JPanel implements ActionListener é uma classe estendida da super classe JPanel. Nessa classe será incluído, um construtor, dois métodos vazios sem retorno e um método principal (man). Dentro mesma é criado uma variável timer do tipo Timer e outras duas variáveis, uma do tipo int e outra do tipo float que serão utilizadas para o construtor. O public FontSizeAnimation por ter o mesmo nome da classe recebe o nome de construtor. Em suas propriedades é criado um novo objeto chamado timer, o mesmo não utiliza de variáveis referencia para acessar as propriedades timer. É o próprio timer que recebe o operador PONTO para acessar a propriedade setInitialDelay que irá informar o tempo que a animação irá começar. O método public void paint(Graphics g), é responsável por receber as informações de texto, que poderá ser posicionado nas coordenadas x e y através da propriedade width e Height que significa largura e altura. Para converter em gráfico o texto escrito, é criado uma variável de referencia chamado de g2d instanciada pela classe Graphics2D e é atribuída a ela a classe Graphics2D. Em seguida é criado um novo objeto com o operador new que é chamado de Font que utiliza a variável de referencia font da classe Font. Essa necessidade se teve porque a classe Graphics2D é classe estendida da classe Graphics que por sua vez é abstract, com isso poderemos acessar as propriedade da variável g2d com o operador PONTO exemplo .setFont e atribuir a variável font. São declaradas variáveis string para o recebimento do texto, variáveis do tipo int para o retorno de tamanho da largura e altura. As variáveis do tipo int que recebem atribuição do tamanho largura e altura da font para utilizar a classe g2g com operador PONTO chamar propriedade drawString para desenhar as coordenadas na tela. O método actionPerformed() é reponsável pela interatividade, foi utilizado um contador e um repetidor para esta ação. Se for utilizado o sinal de negativo ao invés de positivo a imagem vira de cabeça para baixo, foi feito comentários na linha do alpha mas continuou executando perfeitamente o FontSizeAnimation. O método principal public static void main(String[] args) é reponsável pela apresentação do projeto. Nele são feitos alterações do tipo, tamanho do frame , cor da fonte e entre outros, através do operador ponto configurando as propriedades do objeto que foi criado chamado o frame. Faculdade Senac Pelotas Página 2 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS 1.2 Código da aplicação com algumas modificações e comentários. package trabalho; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class FontSizeAnimation extends JPanel implements ActionListener { Timer timer; int x = 1; float alpha = 1; public FontSizeAnimation() { timer = new Timer(40, this); timer.setInitialDelay(500); //tempo de inicialização do FontAnimation timer.start(); // comando que serve para dar com inicio ao objeto } public void paint(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; // Font font = new Font("Comic Sans MS", Font.PLAIN, x);//legal dentro das aspas duplas podemos // o tipo de fonte; g2d.setFont(font); FontMetrics fm = g2d.getFontMetrics();// variavel referencia fm do tipo grafico 2d; String s = "Boa noite turma do ADS"; String p = "Java aplicações Gráficas"; //foi criado, declarei outra variavel; int w = (int) getSize().getWidth(); int h = (int) getSize().getHeight(); Faculdade Senac Pelotas Página 3 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS int stringWidth = fm.stringWidth(s); int stringHeight = fm.stringWidth(s); g2d.drawString(s, (w - stringWidth) / 2, h / 5); //cordenadas x e y do texto; g2d.drawString(p, (w - stringWidth) / 2, h / 1);// foi criado para apresentar outro //texto; } public static void main(String[] args) { JFrame frame = new JFrame("FontSizeAnimation"); //foi criado um novo objeto chamado // frame da classe JFrame e foi passado um arqumento, "FontSizeAnimation",isto se //dá porque foi criado um construtor na classe JFrame; frame.add(new FontSizeAnimation()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(800, 300); // a propriedade setSize informa o tamanho da janela //JFrame dispondo largura e altura; frame.setLocationRelativeTo(null); frame.setTitle("Criado por Paulo Veiga"); // a propriedade setTitle que foi criado, //foi utilizado para incluir o titulo na barra titulo; frame.setBounds(0,100,800,400); //a propriedade setBounds que foi criado,redimensiona //e posiciona JFrame. Primeiro valor cordenada x , segundo cordenada y,terceiro //largura e quarto altura; frame.setVisible(true); } frame.setForeground(Color.BLUE.darker());// foi utilizado a propriedade foreground para //troca cor de fundo da fonte; public void actionPerformed(ActionEvent e) { x += 1; // aqui fica o incremento dando ação de movimento a fonte // se for utilizado o sinal de -+=1 a posição da fonte fica invertida. alpha -= 0.0001; // foi aplicado comentário mas nada aconteceu. repaint(); // comando que serve para repetir o incremento. } } 1.3 Propriedades utilizadas import java.awt.font: A classe Font representa fontes, que são usados para processar texto, de forma visível. Uma fonte fornece as informações necessárias para seqüências mapa de caracteres para seqüências de glifos e tornar as seqüências de glifos em gráficos e objetos de componentes. import java.awt.FontMetrics: A classe FontMetrics define uma métrica font objeto, que encapsula informações sobre o processamento de uma fonte particular em uma tela especial. Faculdade Senac Pelotas Página 4 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS import java.awt.Graphics: É uma classe tem base abstrata para todos os contextos gráficos que permitem um aplicativo desenhar sobre os componentes que são realizados em vários dispositivos. import java.awt.Graphics2D: Esta classe estende a classe Graphics para proporcionar um controle mais sofisticado sobre a geometria, transformação de coordenadas, gerenciamento de cores, layout e texto. Esta é a classe fundamental para tornar as formas em duas dimensões, textos e imagens sobre o Java. import java.awt.event.ActionEvent: Um acontecimento que indica que uma ação ocorreu no componente definido, este evento de alto nível é gerado por um componente exemplo um botão. import java.awt.event.ActionListener: Responsável por atualizar a tela, uma vez que ele vai incrementando um novo evento. import javax.swing.JFrame: Janela responsável pela apresentação do projeto. import javax.swing.JPanel: É um nome genérico dado ao container, que serve para guardar exemplos e documentação de tarefas dos painéis. import javax.swing.Timer: Responsável pelo tempo de execução inicial da animação do FontSizeAnimation . 1.4 Visualização da Ferramenta em Funcionamento Faculdade Senac Pelotas Página 5 JAVA – DESENVOLVENDO APLICAÇÕES GRÁFICAS 1.5 Conclusão Para mim, a realização deste trabalho foi de extrema importância, pois, foi onde pude associar o conteúdo teórico dado em sala de aula com a pratico da programação orientada a objetos. Com a proposta do trabalho compreendida, que nem tudo que existia no projeto nós conseguiríamos associar ao conteúdo dado. Foi necessário buscar informações externas complementares e fazer abstração geral de tudo, para entender as funcionalidades do projeto. Com isso obtive conhecimento em varias propriedades pela qual não tinha visto ainda. Faculdade Senac Pelotas Página 6