Construção de Interfaces Gráficas



Documentos relacionados
Construção de Interfaces Gráficas - Introdução

8. Interfaces Gráficas de Usuário

Swing. Page 1. Swing. Prof. Anderson Augustinho Uniandrade

Tratamento de Eventos

Programação III. Interface Gráfica - Swing. Interface Gráfica Swing Jocélio Passos joceliodpassos@bol.com.br. Interface Gráfica - Swing

Arquitetura de Tratamento de Eventos em Programas com GUI - Graphical User Interface

JAVA. Marcio de Carvalho Victorino. Interface Gráfica em Java (GUI)

Programação Visual em Java

Pacote Java Swing Parte 1

Interface com o Usuário (UI) UIs Desacopladas (2/3) BSI Bacharelado em Sistemas de Informação LOO Linguagens Orientadas a Objetos

Como construir aplicaçõ e applets

Aplicações Gráficas com AWT

PROGRAMAÇÃO ORIENTADA A OBJETOS -INTERFACES GRÁFICAS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Java Foundation Classes Coleção de pacotes para criação de aplicações completas Desktop Interfaces gráficas (GUIs- Graphical User Interface)

Programação Gráfica em Java.

INTERFACE COM O USUÁRIO (em Java) Programação Orientada a Objetos

AWT Versus Swing. Java Deployment Course: Aula 5. por Jorge H C Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Recife, 1999

Interface Gráfica. LPG II Java Interface Gráfica AWT. Introdução. AWT - Abstract Window Toolkit

Java - Swing. Raphaela Galhardo raphaela@j2eebrasil.com.br

Técnicas de Programação II

JCheckbox JRadioButton JComboBox JList JMenu... Alguns componentes já vistos em aula JButton JLabel JTextField

Programação de Interfaces Gráficas. Aula 1. Carlos Eduardo de Carvalho Dantas

Módulo 7. Interface Gráfica com o Usuário GUI - Introdução. Programação Orientada a Objetos I Java (Rone Ilídio)

Programação Orientada a Objetos em Java. GUI Graphical User Interface

Curso de Aprendizado Industrial Desenvolvedor WEB

Interface Gráfica Swing. Leonardo Gresta Paulino Murta

Aula 12 POO 1 Interface Gráfica no Java. Profa. Elaine Faria UFU

API Swing Java. 1. Introdução. 2. Objetivos. 3. Surgimento do Swing. André Scarmagnani 1, Matheus Madalozzo 1, Miguel Diogenes Matrakas 1

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

MÓDULO 4 SWING Parte 3

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Programação Java. Construção de Interfaces com Swing (I)

Interface Gráfica. Prof. Marcelo Cohen. (material da Profa. Luciana Nedel) Graphical User Interface (GUI)

Entender princípios de projeto. Capacitação para construir GUIs. Entender os pacotes que contém componentes de GUI, e as classes e interfaces de

Capítulo 12 Eventos de interacção

JFC/Swing. Java Avançado Interface Gráfica JFC/Swing. Introdução JFC / Swing. Introdução JFC / Swing

JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

Programação por Objectos. Interfaces gráficas. Swing 1/52

Programação Orientada a Objetos

Aula 11: Interfaces gráficas (1/2): elementos de interface Swing

Programação Orientada a Objetos II

JFrame. JLabel : Utilizado como rótulo para exibição de texto e ícones. Interface Gráfica de JAVA - Graphical User Interface (GUI)

Curso de Java Módulo II Swing Fábio Mengue Centro de Computação - Unicamp

Programação Orientada a Objetos II

Desenvolvimento de Aplicações Desktop

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Curso Java Starter. 1

Interface Gráficas Parte I. Bruno Crestani Calegaro

Capítulo 29. Menus. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

1 Criando um aplicativo visual em Java

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Especialização em Engenharia de Software - CEUT

Tutorial de Computação Introdução a Programação Gráfica em Java para MEC1100 v

Prof. Fernando V. Paulovich 25 de julho de SCC Programação Orientada a Objetos

Jframe, JDialog ou JApplet

Interface Gráfica com o Usuário (GUI) Profa. Isabel Harb Manssour (Material adaptado das aulas da Profa. Luciana Nedel e do Prof.

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Linguagem Java - Prof. Luciana Porcher Nedel 1. Um container genérico e visual. Ela trabalha em cooperação com o controle de layouts.

Sumário Introdução à 3a. Edição Introdução Dia 1 - Conceitos Iniciais Dia 2 - Bem-vindo ao Mundo Real... 43

Interfaces Gráficas. Componentes Gráficos Gestores de Posicionamento Manipuladores de Eventos. (Livro Big Java, Late Objects Capítulos 10 e 11)

Programação Orientada a Objetos Flávio de Oliveira Silva 217

Objectivos:. Construir programas com interfaces gráficas Graphical User Interface (GUI) application programs

Para o PowerPoint, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand

Programação Java. Construção de Interface gráfica. Processo Básico: OO + Eventos. Exemplo

1) De acordo com o trecho de código escrito na linguagem JAVA, responda a questão abaixo:

Interface Gráfica 2. E/S pode ser feita por interface gráfica Biblioteca Swing. javax.swing.*

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: Resize Shape Basic Shape FACULDADE DE TECNOLOGIA SENAC PELOTAS

Capítulo 23. às s Interfaces Gráficas. Introdução. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

WEBGIS Sistema Informativo Territorial

Para o OpenOffice Impress, assim como para vários softwares de apresentação, uma apresentação é um conjunto de slides.

O Windows também é um programa de computador, mas ele faz parte de um grupo de programas especiais: os Sistemas Operacionais.

Interfaces Gráficas: Interações Complexas

Sistema de Recursos Humanos

Exercícios 07 Introdução à POO (Interface Gráfica)

Orientação a Objetos

PERES JULIAO CORGOSINHO BRUNO BORGES LEMOS DE OLIVEIRA RAFAEL REIS GOMES

[CANCELAR] - Limpa todos os campos e desabilita campos e botões, exceto [NOVO] e [PESQUISAR].

Informática básica Telecentro/Infocentro Acessa-SP

JAVA APLICAÇÕES GRÁFICAS Propriedade Utilizada: FontSizeAnimation

Gestão de eventos do Rato e teclado

IDE (Integrated Development Environment) / RAD (Rapid Application Development)

OFICINA DE POWER POINT

Introdução à Programação. Interfaces Gráficas

Etec. Cel. Fernando Febeliano da Costa

Professor Paulo Lorini Najar

Is Event Dispatcher Threade (Animation)

JAVA APLICAÇÕES GRÁFICAS Propriedades Utilizadas: imagecomposite FACULDADE DE TECNOLOGIA SENAC PELOTAS

Desenvolvendo aplicações

Ministério da Agricultura, Pecuária e Abastecimento. SPARK - Comunicador Instantâneo MANUAL DO USUÁRIO

Superintendência Regional de Ensino de Ubá - MG Núcleo de Tecnologia Educacional NTE/Ubá. LibreOffice Impress Editor de Apresentação

AULA 2 Planos, Vistas e Temas

Transcrição:

Construção de Interfaces Gráficas Mário Antonio Meireles Teixeira DEINF UFMA Baseado em material original de João Carlos Pinheiro CEFET/MA 1 Objetivos Apresentar Os fundamentos da construção GUI em Java Modelo de Eventos AWT Biblioteca de Componentes Swing 2 1

Introdução Interface gráfica é composta de: Componentes Recipientes (Containers) Layout Eventos 4 2

Recipientes e Componentes Componentes, controles ou widgets são os aspectos visíveis de uma GUI, como botões, menus, caixas de textos São colocados dentro de recipientes (containers). Os recipientes podem conter: Um ou mais componentes, assim como outros recipientes Importante para construção de layouts de complexidade realista 5 AWT versus Swing A Abstract Window Toolkit (AWT) é o antigo conjunto de ferramentas para interfaces gráficas do Java Oferece uma infra-estrutura mínima de interface gráfica Componentes têm aparência dependente de plataforma Limitado em recursos devido a depender de suporte de cada plataforma para os componentes oferecidos Bugs e incompatibilidades entre plataformas 6 3

AWT versus Swing O swing não é um substituto completo do AWT, mas fornece um conjunto muito mais rico e conveniente de componentes para interface com usuário O Swing é menos sujeito a erros específicos de cada plataforma 7 Evolução das AWT Java 1.0 Modelo de eventos arcaico baseado em interfaces Java 1.1 Melhora do modelo de eventos: por delegação usando design pattern Observer Java 1.2 Swing substitui totalmente componentes AWT Mantém e estende ainterface de eventos e layout da versão 1.1 8 4

Tipos de Aplicativos Graficos Há dois tipos de aplicações gráficas em Java Applets executam dentro de um navegador Web Aplicações standalone iniciadas via sistema operacional Ambas capturam eventos do sistema e desenham-se sobre um contexto gráfico fornecido pelo sistema Applets são aplicações especiais que executam a partir de um browser Browser é quem controla seu ciclo de vida (início, fim, etc.) Geralmente ocupam parte da janela do browser, mas podem abrir janelas extras Possuem restrições de segurança 9 Principais classes de GUI java.lang.object java.awt.component java.awt.container javax.swing.jcomponent 10 5

Classe java.awt.component Raiz da hierarquia de componentes gráficos Existe um Component por trás de tudo que pode ser pintado na tela Principais métodos (chamados pelo sistema) void paint(java.awt.graphics g) void repaint() void update(java.awt.graphics g) Dimension getsize() retorna o tamanho de um componente. O tipo de retorno é um objeto da classe Dimension, que possui dois atributos públicos height e width void setsize(int, int) Altera o tamanho de um componente 11 Class java.awt.component getlocation() e setlocation(int x, int y) estes métodos alteram a localização dos componentes (em pixels) relativa ao canto superior esquerdo do componente O tipo de retorno de getlocation() édimension setforeground() e setbackground() altera as cores dos componentes Os argumentos são uma instância de java.awt.color 12 6

Class java.awt.component setfont() define a fonte que será usada para renderizar o texto que será apresentado no componente Este método recebe três argumentos: fonte, estilo e o tamanho setenable(boolean) habilita ou desabilita um componente Este método é útil para criar interfaces que reflitam o estado atual da aplicação do usuário 13 java.awt.container Subclasse de java.awt.component São recipientes. Podem conter outros componentes Descendentes da classe Container: Frame, Panel, Applet e JComponent (raiz da hierarquia dos componentes Swing) Para adicionar um componente em um Container (Panel, Frame, Applet) utiliza-se o método add(component c) 14 7

javax.swing.jcomponent Fornece recursos de alto nível a todos os componentes swing Tamanho preferencial setpreferredsize() Suporte a acessibilidade e internacionalização Suporte a dicas quando o mouse permanece sobre um componente Definição de bordas 15 Principais Componentes JComponent JComboBox JLabel JList JMenuBar JPanel JPopupMenu JScrollBar JScrollPane JTable JOptionPane JTree JInternalFrame JprogressBar JSlider JRootPane JSeparator JToolTip JSplitPane JTabbedPane JToolbar JViewPoint JFileChooser JDesktopPane JColorChooser JLayeredPane JTextComponent JEditorPane Componentes de Texto JTextField JTextPane JPasswordField AbstractButton Botões JButton JToggleButton JCheckBox JRadioButton JMenu JMenuItem 8

Frames (Molduras) É uma janela independente que pode ser movimentada na tela independente de quaisquer outras janelas de GUI Java fornece duas classes para este fim: java.awt.frame, subclasse da classe java.awt.window e javax.swing.jframe, subclasse de java.awt.frame 17 Hierarquia de Herança da Classe JFrame java.lang.object java.awt.component java.awt.container javax.swing.jcomponent java.awt.window... javax.swing.jpanel java.awt.frame javax.swing.jframe 18 9

Frames (JFrame) O seguinte código exibe um JFrame vazio: import javax.swing.jframe; public class Moldura { } public static void main(string[] args) { JFrame f = new JFrame("Primeira moldura"); } f.setsize(300, 250); f.setvisible(true); Aparece no título da moldura É necessário, pois um frame recém construído não está visível na tela 19 Adicionando componentes ao JFrame Até o JDK 1.5 era necessário obter um Container para adicionar os componentes JFrame frame = new JFrame( Teste"); Container cont = frame.getcontentpane(); JPanel pan = new JPanel(); pan.add(new JButton("Button")); cont.add(pan); A SUN corrigiu este inconveniente possibilitando a verificação especial deste recurso em tempo de execução É necessário para manter a independência de plataforma JFrame frame = new JFrame( Teste"); JPanel pan = new JPanel(); pan.add(new JButton("Button")); frame.add(pan); 20 10

Panel e JPanel É um recipiente de uso geral. Ele não pode ser usado isoladamente, como frames e caixas de diálogo Painéis podem administrar eventos 21 Painel - Exemplo public class PanelDemo { public static void main(string[] args) { JFrame f = new JFrame("Content Pane Demo"); f.setsize(350, 250); Container cont = f.getcontentpane(); cont.setlayout(new GridLayout(2,1)); for (int i=0; i<2; i++) { JPanel pan = new JPanel(); pan.setbackground(i==0? Color.ORANGE:Color.CYAN); } } for (int j=0; j<3; j++) pan.add(new JButton("Button")); cont.add(pan); } f.setvisible(true); 22 11

Tratamento de Eventos 23 Tratamento de Eventos Esta seção apresenta como lidar com eventos ou ações que ocorrem dentro de ambientes GUI Interfaces gráficas são guiadas por eventos Exemplo: movimento do mouse, pressionar um botão, entrada de dados em um textfield, etc. Em java eventos são objetos que descrevem o que aconteceu Eventos em Java são uma instância de uma subclasse de java.util.eventobject Fornece o método getsource() que retorna a fonte do evento 24 12

Tratamento de Eventos O modelo de eventos se torna fácil de usar, pois é baseado em uma nomenclatura simples: Para cada tipo de evento XXXEvent existe uma interface XXXListener (interface ouvinte ): Os métodos desta interfaces são todos public void e recebem um único argumento do tipo XXXEvent (um objeto) ActionEvent: ActionListener ItemEvent : ItemListener TextEvent : TextListener WindowEvent: WindowListener KeyEvent : KeyListener... XXXEvento : XXXListener 25 Tratamento de Eventos Nomenclatura de eventos: Se um componente emite eventos de tipo XXXEvent, então ele tem um método público chamado addxxxlistener(xxxlistener) Quando um componente é ativado de uma maneira que o leve a emitir eventos XXX, todos os receptores registrados recebem uma chamada para um dos métodos da interface receptora Qualquer objeto que implementa esta interface pode ser registrado como um receptor de eventos XXX 26 13

Tratamento de Eventos Nomenclatura de eventos: Além do método addxxxlistener (XXXListener), um componente que emite eventos, também tem um método público chamado removexxxlistener(xxxlistener) Possibilita que os receptores que não estejam mais interessados em eventos XXX desfaçam o registro 27 Modelo de Tratamento de Eventos Pode ser dividido em três partes 1. Origem do evento (fonte) É o resultado de alguma ação do usuário em um componente GUI Exemplo: o clique de mouse em um componente irá gerar (source) um ActionEvent 28 14

Modelo de Tratamento de Eventos 29 Modelo de Tratamento de Eventos 2. Objeto que contem informações sobre evento (ActionEvent) Encapsula informações sobre o evento que ocorreu Exemplo: um objeto da Classe ActionEvent Todo evento tem um objeto que é sua fonte Object fonte = evento.getsource(); 30 15

Modelo de Tratamento de Eventos 3. Listener (Ouvinte) Recebe eventos como argumento public class NomeClasse implements ActionListener { public void actionperformed(actionevent evt) { Object fonte = evt.getsource(); System.out.println(evt + em + fonte); } } 31 Modelo de Tratamento de Eventos Programador deve realizar duas tarefas 1. Registrar um ouvinte para cada evento que se deseja tratar 2. Implementar o(s) método(s) que manipulam o evento 32 16

Como ligar a fonte ao Ouvinte Na ocorrência de um evento, em uma fonte, todos os ouvintes registrados serão notificados. fonte.add<listener> (referência_para_listener); O mesmo objeto que é fonte às vezes também é listener, se implementar as interfaces: Ainda assim, é necessário registrar a fonte ao listener this.addwindowlistener(this); Fonte Ouvinte Confira: ButtonTest.java 33 Descrição dos Eventos Descendentes de java.awt.event.awtevent Divididos em categorias (java.awt.event) ActionEvent (fonte: componentes de ação (JButton, JTextField,...)) MouseEvent (fonte: componentes afetados pelo mouse) ItemEvent (fonte: componentes de seleção (JCheckBox, JRadioButton, JComboBox,...)) AdjustmentEvent (fonte: scrollbars) TextEvent (fonte: componentes de texto) WindowEvent (fonte: janelas) FocusEvent (fonte: componentes em geral) KeyEvent (fonte: componentes afetados pelo teclado) 34 17

Alguns componentes (subclasse de JComponent) 35 JLabel São strings de texto usadas para identificar outros elementos. Normalmente são inseridas a esquerda ou acima do elemento que estar sendo rotulado Pode apresentar: Somente Texto Imagens Texto e imagens Confira: LabelTest.java 36 18

JTextField e JPasswordField É um dispositivo de linha única de texto Em virtude de ser possível apenas uma linha, um ActionListener pode ser informado através de actionperformed() quando a tecla enter for pressionada Este componente não exibe barra de rolagem, mas é possível rolar sobre o texto longo da esquerda para a direita, se for necessário A classe JPasswordField herda de JTextField e adiciona vários métodos que são específicos ao processamento de senhas 37 JTextField e JPasswordField Confira: TextFieldTest.java 38 19

Botões São elementos de forma retangular que o usuário utiliza para iniciar ações O pacote swing define vários tipos de botões botões de comando Check boxes (caixa de seleção) Radio buttons Todos estes botões são subclasse de javax.swing.abstractbutton 39 JButton javax.swing.jcomponent javax.swing.abstractbutton (Classe Abstrata) javax.swing.jbutton javax.swing.togglebutton javax.swing.jcheckbox javax.swing.jradiobutton 40 20

JButton São criados com a classe JButton Quando o usuário clica no botão é gerado um ActionEvent O método actionperformed(actionevent evt) de qualquer ouvinte registrado é chamado quando o botão for pressionado Confira novamente: ButtonTest.java 41 JCheckBox (Caixa de Seleção) Fornece um dispositivo simples de entrada liga/desliga com um rótulo de texto ao lado A seleção ou o cancelamento de um checkbox é notificado pela interface ItemListener que define o método: public void itemstatechange(itemevent e) Um objeto da classe ItemEvent possui um método getstatechange(), que retorna uma das duas constantes: ItemEvent.SELECTED ItemEvent.DESELECTED Confira: CheckBoxTest.java 42 21

JRadioButton e ButtonGroup Os botões de opção normalmente aparecem como um grupo em que apenas um botão de opção pode ser selecionado O relacionamento lógico entre botões de um grupo é mantido por um objeto ButtonGroup O objeto ButtonGroup em si não é um componente GUI, pois não é exibido em uma interface com o usuário O mesmo pode ser utilizado como parâmetro no construtor de um JRadioButton 43 JRadioButton (Botões de Opção) Confira: RadioButtonTest.java 44 22

JToolTip (Dica) É uma string de texto que fornece uma dica. Aparece automaticamente quando o mouse permanece sobre o componente Pode ser configurado para qualquer JComponent É necessário apenas chamar o método settooltiptext() no componente Ex: comp.settooltiptext( dica ); 45 JComboBox (Escolhas) Fornece uma lista de itens entre os quais o usuário pode escolher JComboBox gera ItemEvent, assim como, JCheckBox e JRadioButton Uso de classe interna anônima para o tratamento de eventos Confira: ComboBoxTest.java 46 23

JList Exibe uma série de itens em que o usuário pode selecionar um ou mais itens Este componente suporta Listas de uma única seleção: Confira: ListTest.java Lista de seleção múltipla: Confira: MultipleSelection.java 47 Tratamento de Eventos do Mouse Interfaces ouvintes de eventos do mouse MouseListener e MouseMotionListener Os eventos do mouse podem ser capturados por qualquer componente GUI que herda de javax.swing.jcomponent Todos os métodos ouvintes aceitam um objeto MouseEvent como seu argumento 48 24

Tratamento de Eventos do Mouse (MouseEvent) Métodos (Ouvintes) da interface MouseListener mouseclicked(mouseevent e) mousepressed(mouseevent e) mousereleased(mouseevent e) mouseentered(mouseevent e) mouseexited(mouseevent e) Quando o botão do mouse for pressionado e liberado Quando o botão do mouse for pressionado Quando o botão do mouse for liberado (precedido por um evento mousepressed) Quando o cursor do mouse entra nos limites de um componente Quando o cursor do mouse deixa os limites de um componente 49 Tratamento de Eventos do Mouse (MouseEvent) Métodos (Ouvintes) da interface MouseMotionListener mousedragged(mouseevent) mousemoved(mouseevent) Quando o botão do mouse for pressionado e movido (precedido por uma chamada mousepressed) Quando o cursor do mouse for movido nos limites de um componente Confira: MouseTracker.java 50 25

Classes Adaptadoras Padrão de Projeto chamado Adapter Algumas interfaces possuem uma classe adaptadora que implementa todos os seus métodos, com um corpo vazio: Só existem para interfaces que possuem mais de um método Pode-se herdar de uma classe adaptadora e fornecer uma implementação (sobrescrever) somente o método necessário para o tratamento do evento 51 Classes Adaptadoras O nome da classe adaptadora é semelhante ao do Listener : MouseListener: MouseAdapter MouseMotionListener: MouseMotionAdapter KeyListener: KeyAdapter WindowListener: WindowAdapter... MouseDetails.java 52 26

Tratamento de Eventos do Teclado Uma classe que implementa KeyListener deve fornecer as definições para os métodos: KeyPressed KeyReleased KeyTyped Cada uma das classes recebe um KeyEvent como argumento A classe trata seus próprios eventos de teclado usando o método addkeylistener Confira: KeyDemo.java 53 Referências Deitel & Deitel. Java como Programar, 6ª ed. Caps. 11 e 22; Materiais do site da SUN (http://java.sun.com) 54 27