1.73k likes | 1.86k Views
Aplicações JAVA Modo Gráfico Standalone. Paulo Vinícius Wolski Radtke PUC PR - radtke@ppgia.pucpr.br. Aplicações Standalone Gráficas. Trabalham com componentes de interface gráfica; Tais componentes fazem parte do Abstract Windows Toolkit (AWT);
E N D
Aplicações JAVAModo Gráfico Standalone Paulo Vinícius Wolski Radtke PUC PR - radtke@ppgia.pucpr.br
Aplicações Standalone Gráficas • Trabalham com componentes de interface gráfica; • Tais componentes fazem parte do Abstract Windows Toolkit (AWT); • É um pacote de classes dedicado a interface gráfica, eventos, etc; • A partir do JDK 1.2 (1.1 opcional) há o pacote Swing para interface.
AWT - Exemplo de Aplicação StandAlone Gráfica public class App { Button b; public App() { this(“”); } public App(String titulo) { super(titulo); b = new Button(“Ok”); enableEvents(WindowEvent.WINDOW_CLOSING); pack(): }
public void processWindowEvent(WindowEvent e) { switch (e.getID()) { case e.WINDOW_CLOSING: system.exit(0); return; default: super.processWindowEvent(e); } public static void main(String args[]) { App a = new App(“Janela”); a.setVisible(true); } } • obs: no exemplo acima o código system.exit(0) encerra a aplicação. No caso de uma janela modal, o correto seria setVisible(false) para fechar a janela e entregar o controle à janela principal da aplicação.
AWT - Janelas • A classe Window fornece apenas o comportamento geral de uma janela, não podemos instanciá-la ; • Normalmente utilizamos instâncias de Frame ou Dialog.
AWT - Janelas • Frame fornece um título para a janela, caixas para fechá-la, e outras características específicas de plataforma ; • Frame também permite que sejam adicionados menus.
AWT - Janelas • Dialog é uma forma mais limitada de Frame, que tipicamente não tem um título; • FileDialog é uma subclasse de dialog, que fornece suporte para seleção de arquivos.
AWT - Frames • Frames são janelas que são independentes de um applet e do browser que os contém ; • Frames podem ter menus ; • Um frame é uma janela com título, menu e outras características de uma janela.
AWT - Frames • Para criarmos um frame utilizamos : • new Frame() : cria um frame sem um título ; • new Frame(String str) : cria um frame com o título indica por srt. • Frames se comportam de maneira parecida com panels ; • Layouts são selecionados e componentes são adicionados da mesma maneira.
AWT - Frames • No exemplo abaixo, criamos um frame, definimos um layout e inserimos dois botões : win = new Frame(“Minha Janela”); win.setLayout(new GridLayout(2,1); win.add(new Button(“Botão 1”)); win.add(new Button(“Botão 2”)); • Podemos determinar o tamanho do frame utilizando o método resize.
AWT - Frames • Outro método é, ao invés de usar o resize, fazer com que o frame tenha o tamanho mínimo para conter todos os seus componentes ; • O método pack implementa essa funcionalidade ; • Devemos chamar esse método apenas depois de adicionarmos os componentes.
AWT - Frames • Um frame normalmente está invisível quando o criamos ; • Para exibi-lo, precisamos usar o método setVisible do frame : win.setVisible(true); • Para esconder o frame utilizamos o mesmo método : win.setVisible(false);
AWT - Frame • Apesar da janela aparecer, não há um método para destruí-la ; • Caso ela estivesse visível na tela quando o browser fosse fechado, ela continuaria a rodar ; • A única maneira então é destruir a tarefa no gerenciador de tarefas.
AWT - Frame • Para habilitarmos a capacidade da janela se destruir, precisamos capturar o evento do fechamento da janela (X no canto superior direito da janela).
AWT - Frame • Para capturarmos esse evento, tratamos um evento de WindowListner ou habilitamos a janela para tratar de evento; • Para habilitarmos o tratamento de eventos (mais simples em código), utilizamos o seguinte código no construtor: enableEvents(WindowEvent.WINDOW_CLOSING);
AWT - Frame • Também devemos implementar o seguinte método: public void processWindowEvent(WindowEvent e) { switch (e.getID()) { case e.WINDOW_CLOSING: setVisible(false); return; default: super.processWindowEvent(e); } }
AWT - Menus • Cada janela criada pode ter a sua própria barra de menu ; • Cada barra de menu pode ter diversos menus ; • Cada menu pode ter itens de menu ; • Cada um desses itens são representados pelas classes MenuBar, Menu e MenuItem.
AWT - Menus • Para criar um menu para uma dada janela, crie uma nova instância da classe MenuBar: MenuBar mbar = new MenuBar(); • Para ver este menu como o menu default para a janela, use o método setMenuBar() da classe Frame.
AWT - Menus • Para adicionar menus individuais é necessário criá-los e efetivamente adicioná-los ao menu : Menu myMenu = new Menu(“Arquivo”); mbar.add(myMenu); • Os itens serão adicionados da esquerda para a direita.
AWT - Menus • Alguns sistemas fornecem um menu especial para ajuda, que é desenhado no canto direito da barra ; • Podemos indicar que um menu em específico é um help menu utilizamos o método setHelpMenu() : Menu help = new Menu(“Help”); mbar.add(help); mbar.setHelpMenu(helpmenu);
AWT - Menus • Se por algum motivo quisermos evitar que o usuário selecione um menu, utilizamos o método disable() do menu, e enable() para torná-lo disponível novamente : myMenu.disable(); myMenu.enable();
AWT - Menus • Há quatro tipos de itens de menus que podemos adicionar : • MenuItem : itens regulares de menu ; • CheckBoxMenuItem : itens de menu que podem ser marcados/desmarcados ; • Outros menus, com seus próprios itens ; • Separadores, que separam grupos uns dos outros.
AWT - Menus • Itens de menu são adicionados usando a classe MenuItem ; • Adicionamo-os a um menu com o método add : Menu meumenu = new Menu(“Arquivo”); meumenu.add(new MenuItem(“Abre”); meumenu.add(new MenuItem(“Fecha”);
AWT - Menus • Para adicionarmos um submenu ao menu, criamos um novo menu e o adicionamos ao menu : Menu meumenu = new Menu(“Arquivo”); meumenu.add(new MenuItem(“Abre”); meumenu.add(new MenuItem(“Fecha”); Menu recente = new Menu(“Recentes”); meumenu.add(recente);
AWT - Menus • Para criarmos um item de menu que seja selecionável, criamos uma intância de CheckBoxMenuItem ; • O criamos como um item de menu e o adicionamos ; CheckBoxMenuItem coords = new CheckBoxMenuItem(“Mostra Coordenadas”); meumenu.add(coords);
AWT - Menus • O último elemento que podemos inserir num menu são os separadores ; • É uma linha que separa grupos de itens de menu ; • O separador é um item com um “-” : MenuItem separador = new Menuitem(“-”); meumenu.add(separador);
AWT - Menus • A ação de selecionar um item de menu gera um evento ; • O tratamento deve ser feito no método com os listners ActionListner (itens de menu) e ItemListner (CheckboxMenuItem).
Aplicações Standalone GráficasTamanho da Janela • Para descobrirmos o tamanho, utilizamos o método getSize, e as variáveis width e height da clase Dimension retornada ; • getSize().heigth retorna a altura do applet ; • getSize().width retorna a largura do applet; • Para modificarmos o tamanho da janela, utilizamos o método setSize.
JAVA - Interfaces com AWT • AWT fornece : • Um conjunto completo para interface gráfica, incluindo menus, scrollbars, botões, etc; • Suporte a containers de interface gráfica; • Um sistema de eventos para gerenciar eventos de sistema e do usuário entre os componentes AWT; • Mecanismos para dispor componentes que permitem independência de plataforma.
JAVA - Interfaces com AWT • A idéia básica por trás de AWT é que um programa JAVA com interface gráfica é um aninhamento de componentes, começando na janela mais externa e descendo até o menor componente de interface; • Todas as classes componentes da AWT estão no pacote java.awt.
JAVA - Interfaces com AWT • Os componentes que podemos trabalhar em AWT são : • Containers :são componentes AWT gerais que podem conter outros componentes AWT, incluindo outros containers. O container mais comum é o panel, que é um container que pode ser exibido na tela. • Canvas : Um canvas é uma superfície para “desenhos”. Mesmo que você possa “desenhar” em containers (todos exemplos até agora foram feitos assim), canvas são preferíveis para desenhar imagens ou outras operações gráficas.
JAVA - Interfaces com AWT • Componentes de Interface Usuário : São os botões, listas, menus pop-up, check boxes e outros elementos típicos de interface gráfica ; • Componentes de Construção de Janela : São as janelas, frames, barras de menu, etc. Eles são separados dos componente anteriores por não serem usados em applets.
AWT - Componentes Básicos • Componentes Básicos de Interface : • O componente AWT mais simples é o componente de interface usuário ; • É possível inserí-los sem grandes dificuldades num applet no método init.
AWT - Componentes Básicos • Tipos de componentes IU básicos : • Labels ; • Botões ; • Check boxes ; • Menus de escolha ; • Text fields.
AWT - Componentes Básicos • Exemplo : Adicionando um botão a um applet : public void init() { Button b = new Button(“OK”); add(b); }
AWT - Componentes Básicos • Apesar de ser possível utilizar o código anterior para inserir um componente, este é desaconselhável; • Mais tarde, se for necessário referenciar o botão, não haverá uma instância acessível para os métodos do applet; • É preferível ter um atributo da classe para armazenar as referências.
AWT - Componentes Básicos Class App extends Applet { Button b; public void init() { b = new Button(“OK”); add(b); } ...
AWT - Componentes Básicos • O código anterior apenas cria uma instância de botão com o texto “OK” impresso sobre a sua face; • O botão é simplesmente inserido no applet, na primeira posição livre (isto é, sem componentes).
AWT - Labels • Componente mais simples; • Consiste de um texto (uma string) que é desenhada na tela; • Um label não é editável, é apenas mais um componente na tela.
AWT - Labels • Um label tem vantagens sobre uma string ordinária desenhada na tela: • Não é preciso redesenhar labels manualmente, AWT cuida disso; • Labels seguem um layout, e podem ser alinhados com outros elementos (o que veremos mais tarde);
AWT - Labels • Para criarmos um label, utilizamos um dos seguintes construtores: • Label() : cria um label sem nenhum texto; • Label(String) : cria um label com um texto especificado por String; • Label(String, int) : cria um label com o texto especificado por String e alinhado.
AWT - Labels • No último construtor, o parâmetro inteiro indica um alinhamento do texto ; • Tal parâmetro pode ser obtido da própria classe Label, através das constantes : • Label.LEFT; • Label.RIGHT; • Label.CENTER.
AWT - Labels • Métodos de um label : • getText() : retorna o texto associado a um label; • setText(String) : armazena um String específica no label; • getAlignment() : retorna um inteiro representando o alinhamento do label; • setAlignment(int) : Muda o alinhamento do texto.
AWT - Botões • Botões são componentes simples de interface usuário que disparam alguma ação quando são pressionados ; • Por exemplo, uma aplicação pode ter um botão EXIT que feche a aplicação quando pressionado.
AWT - Botões • Para criar-se um botão, podemos usar um dos seguintes construtores : • Button() : cria um botão sem nenhum texto impresso na face ; • Button(String) : cria um botão com o texto especificado em String impresso em sua face.
AWT - Botões • Exemplo para criar-se botões : public void init() { add(new Button(“Ok”); add(new Button(“Cancel”); }
AWT - Check Boxes • Check boxes são componentes que tem dois estados : ligado ou desligado. • A mudança de estado no check box dispara um evento; • Seu estado será utilizado em um evento, como característica opcional.