Na última aula, vimos que interfaces gráficas (GUI) em Java são criadas através do uso adequado de componentes, containers e layouts.
Os componentes estudados foram:
Como vimos, os containers servem para agrupar componentes e organizá-los melhor:
Os layouts são usados para organizar automaticamente os componentes dentro de um container:
Nosso objetivo agora é praticar o uso dos elementos de GUI. A partir de hoje, iremos desenvolver uma mesma aplicação DURANTE as aulas de laboratório, ou seja, é fundamental o acompanhamento dessas aulas para uma melhor compreensão dos conceitos envolvidos
A aplicação será uma implementação (simples) em Java da linguagem LOGO. Para quem nunca ouviu falar disso, ela foi criada para ensinar programação para crianças. Possui uma sintaxe relativamente simples e as principais construções encontradas em linguagens "para adultos". O seu grande diferencial é a motivação para escrever os programas: a criança tem o objetivo de comandar uma tartaruga, capaz de desenhar figuras em uma tela gráfica.
Portanto, o que iremos fazer é um interpretador de RLOGO (Logo reduzido), em Java. O que queremos no final é uma aplicação capaz de:
A linguagem RLOGO possui os seguintes comandos:
Veja aqui um exemplo de implementação dessa linguagem.
Evidentemente, não seremos capazes de fazer tudo isso em uma única aula, mas começaremos pela parte mais importante...
. . . . . . . . .
... que evidentemente, não é a interface gráfica, mas sim a modelagem das classes.
Precisaremos de uma classe Tartaruga, que implementará a funcionalidade da... tartaruga.
Essa classe deverá controlar a posição (x,y) e a direção (ângulo)da tartaruga na tela. Será preciso criar alguns métodos para avançar, voltar, girar, parar/começar o desenho, etc.
Exercício:
|
Agora, vamos pensar um pouco em como desenhar na tela. Se você procurar nas classes da API Java, não vai encontrar nada útil nesse sentido. Portanto, teremos que improvisar. O que precisamos é de uma classe que já tenha funcionalidade visual (isto é, exiba algo na tela gráfica). Uma possível escolha é JPanel: apesar de sua utilidade principal ser o agrupamento de componentes, é possível desenhar dentro de um JPanel.
Mas para isso funcionar direito, será preciso criar uma especialização de JPanel, que desenhará exatamente o que queremos. Ou seja, iremos criar uma nova classe, derivada de JPanel.
Se olharmos na documentação, veremos que o método responsável por desenhar o conteúdo do JPanel é public void paintComponent(Graphics g). Isso significa que deveremos sobrescrever esse método na nossa nova clase, de forma a desenhar o que queremos. Fácil, não ?
A única questão que resta é entender o que é o parâmetro g (objeto da classe Graphics): Graphics é a classe que implementa todos os recursos de desenho em Java, ou seja, ela encapsula uma área física de desenho (na tela ou não) e os métodos para acessá-la. Consulte a documentação!
Para facilitar, veja este exemplo.
Exercício:
|
Se tudo correu conforme o planejado, você já tem uma Tartaruga implementada e uma área de desenho funcional. O próximo passo é juntar as duas, ou seja, fazer a tartaruga passear na área de desenho. Mas isso, no próximo capítulo.
Você chegou ao final desta importante etapa. Revise os conceitos e prepare-se: iremos adicionar funcionalidade à sua interface!