Prévia do material em texto
Este primeiro módulo aborda a criação de componentes visuais por meio de código, utilizando a biblioteca AWT. Java suporta, dois tipos de bibliotecas gráficas: AWT e Swing. A AWT foi a primeira API para interfaces gráficas a surgir no Java. As bibliotecas gráficas são bastante simples no que diz respeito a conceitos necessários para usá-las, a complexidade no aprendizado de interfaces gráficas em Java reside no tamanho das bibliotecas e no enorme mundo de possibilidades; isso pode assustar, num primeiro momento. AWT e Swing são bibliotecas gráficas oficiais inclusas em qualquer JRE ou JDK. Além destas, existem algumas outras bibliotecas de terceiros, sendo a mais famosa, o SWT desenvolvida pela IBM e utilizada no Eclipse e em vários outros produtos. Aplicações gráficas são executadas em ambientes gráficos de sistemas operacionais, considerando-se que uma GUI (Graphical User Interface) é um ambiente de imagem mais amigável. Em geral, cada sistema operacional oferece GUIs com aspecto visual diferente (Exemplos: NEWS, Sun e COM, Microsoft). diferencial do Java para o desenvolvimento de aplicações gráficas reside no fato de que elas podem ser executadas em diversos ambientes gráficos sem demanda de modificação ou recompilação. Voltando-se às GUIs, um dos benefícios centrais é o uso de componentes padronizados no que se refere às representações e operação da interface. Neste raciocínio, um componente GUI (GUI component) corresponde ao objeto visual com o qual o usuário interage através dos periféricos de uma máquina computacional, realizando uma ou um grupo de operações como, por exemplo, um desenho. Os componentes GUI ou widgets (dispositivos de janela) são os itens construtivos da interface tais como os botões e a barra de rolagem. No âmbito do Java, há uma vasta biblioteca de widgets e capacidades gráficas estruturadas em classes pertencentes ao pacote java.awt ou awt (Abstract Window Toolkit). Tal pacote fornece tanto classes comuns, quanto abstratas referentes à renderização e obtenção de informações de sistema gráfico oferecido pela plataforma sobre a qual opera a máquina virtual Java. As classes básicas da AWT são todas extensões da classe java.lang.Object, a qual é, grosso modo, a superclasse de todas as classes Java. A classe java.awt.Font ocupa-se de fontes e suas respectivas características e representação. Já a classe java.awt.Color possibilita a representação de cores, enquanto a classe java.awt.Graphics oferece um conjunto de primiticas de desenho e a java.awt.Toolkit viabiliza a obtenção de informações sobre sistema gráfico em uso pela máquina virtual. E, finalmente, a classe abstrata é alicerce para concepção de todos os componentes GUI oferecidos pelo Java por meio da AWT. Assim, a AWT está fundamentada em um máximo denominador comum entre as plataformas suportadas, visto que implementa componentes e facilidade que são passíveis de reproduçãoentre as diversas plataformas para as quais são destinadas máquinas virtuais, garantindo-se o máximo possível de portabilidade. Neste sentido, pode-se dizer que um determinado componente deve possuir representação equivalente em qualquer plataforma suportada, mesmo que no âmbito da aparência o componente se distingue em uma da outra, pois a idéia básica é manter os princípios básicos de funcionamento e de operação. Para a construção de uma aplicação gráfica se faz necessário conceber a interface de aplicação, identificando-se quais serão os componentes utilizados e os objetivos de tal utilização, bem como a maneira de distribuir tais componentes. A partir de tal estruturação deve-se adicionar código para tudo, uma vez que JDK não fornece uma interface para construção visual de aplicações gráficas, diferentemente de outros como, por exemplo, Borland Delphi. A implementação de uma aplicação gráficas abarca três itens: Instanciação de componentes selecionados Cada componente a ser adicionado na interface deve ser instanciado individualmente. Considerando-se que um componente corresponde à uma classe, deve-se instanciar um objeto da classe que se deseja para criar o componente. Caso seja preciso referenciar-se componente posteriormente, deve-se manter uma variável para tal finalidade. Normalmente, os componentes da interface se relacionam com variáveis-membro da classe, a fim de que seja possível referenciá-lo por todos os métodos da mesma. Tem-se seguinte exemplo: // declaração de atributos da classe private Button b1; private Button b1; // construtor da classe b1 = new Button ("Ok"); b2 = new Button ("Fechar"); Adição do componente na interface Todos os componentes que devem ser exibidos na interface devem também ser adicionados individualmente a esta em um dos containers existentes na interface, sendo necessário especificar seu posicionamento por meio de gerenciador de layout. Considerando os botões instanciados no passo anterior, a adição poderia corresponder a: // Adição de componentes: add (b1) ; // utilizando layout defaultadd (b2 BorderLayout.SOUTH) ; // utilizando Border layout Registro dos métodos processadores de eventos Considerando que a interface das aplicações é renderizada pela GUI do sistema operacional, quando ocorre a interação entre usuário e aplicação sistema operacional emite uma série de mensagens descrevendo tipo e forma de interação para a aplicação responsável pela janela. Para que a aplicação processe a interação com usuário, deve-se adicionar à mesma métodos especiais (event listeners) para receber tais mensagem, bem como deve-se associá-los aos componentes que devem reagir à interação concebida, tal como no exemplo abaixo: // registro dos listeners b1.addActionListener (this) ; b2.addActionListener (new ButtonHandler ) ; Voltando-se aos componentes básicos, tem-se que a classe abstrata java.awt.Componet fornece a infra-estrutura de criação de objetos que tenham representação gráfica passível de exibição em tela e, por conseguinte, de interação com usuário. Uma classe abstrata não pode ser diretamente instanciada, mas somente utilizada como framework para concepção de classes derivadas (novos componentes) ou, ainda, como classe que possibilita tratamento generalizados de componentes derivados por meio de polimorfismo. Quando utilizada como classe base para concepção de componentes, pode-se criar componentes leves (lightweight components), componentes não associados com janelas nativas. Esta classe origina a construção dos seguintes componentes da AWT: Atalho para item de menu (MenuShortcut) Barra de menus (MenuBar) Barra de rolagem (ScrollBar) Botão (Button) Caixa de entrada de texto (TextField) Caixa de lista (List) Caixa de opção (Checkbox) Caixa de seleção (Choice) Caixa multilinha de texto (TextArea) Canvas (Canvas) Grupo de botões de opção (CheckboxGroup) Item de menu (Menultem) Item de menu opção (CheckboxMenultem) Janela completa (Frame) Janela de diálogo (Dialog) Janela de diálogo para arquivos (FileDialog) Janela simples (Window)Menu pull-down (Menu) Painel (Panel) Painel deslocável (ScrollPane) Rótulo de texto (Label) Exercício 1: Considerando a organização do Java Standard Edition 6, AWT e JDBC são pertinentes, respectivamente, ao contexto: A) biblioteca de integração e biblioteca de base. B) toolkit de interface e biblioteca complementar. C) biblioteca de base e biblioteca complementar. D) tecnologia de distribuição e biblioteca de integração. E) toolkit de interface e biblioteca de integração. Exercício 2: Assinale a alternativa correta: A) diferencial do Java para desenvolvimento de aplicações gráficas reside no fato de que elas podem ser executadas em diversos ambientes gráficos sem demanda de modificação ou recompilação.B) diferencial do Java para desenvolvimento de aplicações gráficas reside no fato de que elas podem ser executadas em diversos ambientes gráficos e demanda pequena modificação ou recompilação. C) diferencial do Java para desenvolvimento de aplicações gráficas reside no fato de que elas podem ser executadas em diversos ambientes gráficos mas demanda muita modificação ou recompilação. D) problema do Java para desenvolvimento de aplicações gráficas reside no fato de que elas podem ser executadas em diversos ambientes gráficos sem demanda de modificação ou recompilação. E) problema do Java para desenvolvimento de aplicações gráficas reside no fato de que elas não podem ser executadas em diversos ambientes gráficos sem demanda de modificação ou recompilação. Exercício 3: AWT e Swing são bibliotecas gráficas oficiais inclusas em qualquer: A) JRE e JDBC B) JRE e JDK C) API D) dotNet E)JSDK e API Exercício 4: Em relação a criação somente de componetes AWT, qual das alternativas está correta: A) private Label b1; private Label b1; I1 = new Label ("Nome"); = new Label ("Idade"); B) private JLabel b1; private JLabel b1; I1 = new Label ("Nome"); = new Label ("Idade"); C) private Label b1; private Label b1; I1 = new JLabel ("Nome"); 12 = new JLabel ("Idade"); D) private JButton b1; private Button b1; b1 = new JButton ("Ok"); b2 = new Button ("Fechar"); E) private Label b1;private JLabel b1; I1 = new Label ("Nome"); = new JLabel ("Idade"); Exercício 5: Em relação às formas de se criar Interface Gráfica do Usuário (GUI), sabe-se da utilização dos pacotes AWT e Swing. Sobre eles, explique qual é a extensão desses pacotes: A) As classes do swing são extensões do pacote AWT que é nativo do Java B) As classes do AWT são extensões do pacote Swing que é nativo do Java C) As classes do swing são extensões do pacote AWT mas que não é nativo do Java D) As classes do AWT são extensões do pacote Swing mas que não que é nativo do Java E) As classes do swing e AWT não são nativas do Java