A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

GUI – GRAPHIC USER INTERFACE

Apresentações semelhantes


Apresentação em tema: "GUI – GRAPHIC USER INTERFACE"— Transcrição da apresentação:

1 GUI – GRAPHIC USER INTERFACE
Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)

2 Leitura Capítulo 11 (Prog. Orient. a Obj. usando Java - 4th Edition)

3 Lembrando: Tipo estático e dinâmico
Orientação a objetos com Java Lembrando: Tipo estático e dinâmico O tipo declarado de uma variável é seu tipo estático. O tipo do objeto ao qual uma variável se refere é seu tipo dinâmico. O trabalho do compilador é verificar as violações de tipo estático. for(Item item : items) { item.print(); // Erro em tempo de compilação. } © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

4 Lembrando: Sobrescrição
Orientação a objetos com Java Lembrando: Sobrescrição método print tanto em super como em subclasses satizfaz tanto a verificação de tipo estático como dinâmico © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

5 Lembrando: Pesquisa de método
Orientação a objetos com Java Lembrando: Pesquisa de método Herança mas não sobrescrição. A hierarquia de herança é ascendente, pesquisando uma correspondência. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

6 Lembrando: Polimorfismo de método
Orientação a objetos com Java Lembrando: Polimorfismo de método Chamadas de método são polimórficas: O método real depende do tipo de objeto dinâmico. Métodos em Object são herdados por todas as classes. O método toString é comumente sobrescrito: public String toString() Retorna uma representação de string do objeto. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

7 Lembrando: Níveis de acesso:
Orientação a objetos com Java Lembrando: Níveis de acesso: © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

8 Lembrando: Classes e métodos abstratos
Orientação a objetos com Java Lembrando: Classes e métodos abstratos Os métodos abstratos têm abstract na assinatura. Os métodos abstratos não têm corpo. Os métodos abstratos tornam a classe abstrata. As subclasses concretas completam a implementação. As classes abstratas funcionam como superclasses incompletas. Nenhuma instância. As classes abstratas suportam o polimorfismo. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

9 Lembrando: Herança múltipla
Orientação a objetos com Java Lembrando: Herança múltipla Fazer uma classe herdar diretamente de múltiplos ancestrais. Cada linguagem tem regras próprias. Como resolver definições concorrentes? O Java proíbe isso para classes. O Java permite isso para interfaces. Nenhuma implementação concorrente. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

10 Lembrando: Características de interfaces
Orientação a objetos com Java Lembrando: Características de interfaces Todos os métodos são abstratos. Não há construtores. Todos os métodos são públicos. Todos os campos são públicos, estáticos e finais. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

11 Lembrando: Interfaces
Orientação a objetos com Java Lembrando: Interfaces As interfaces fornecem especificação sem implementação. As interfaces são inteiramente abstratas. As interfaces suportam o polimorfismo. As interfaces Java suportam múltipla herança. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

12 Lembrando: Implementações alternativas
Orientação a objetos com Java Lembrando: Implementações alternativas List l1 = new ArrayList(); //use sempre dessa maneira © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

13 Orientação a objetos com Java
Visão geral Criando GUIs Componentes de interface Layout de GUI Tratamento de evento © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

14 Orientação a objetos com Java
Princípios da GUI Componentes: blocos de construção GUI. Botões, menus, sliders etc. Layout: organizando componentes para formar uma GUI utilizável. Utilizando gerenciadores de layout. Eventos: reagir à entrada de usuário. Pressionamentos de botão, seleções de menu etc. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

15 Orientação a objetos com Java
AWT e Swing © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

16 Orientação a objetos com Java
Criando um frame import java.awt.*; import java.awt.event.*; import javax.swing.*;    public class ImageViewer { private JFrame frame; /** * Cria um ImageViewer para mostrá-lo na tela. */ public ImageViewer() makeFrame(); } // restante da classe omitido. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

17 Orientação a objetos com Java
Elementos de um frame Título: Barra de menu Painel de conteúdo Controles de janela © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

18 Orientação a objetos com Java
O painel de conteúdo /** * Cria um frame Swing e seu conteúdo. */ private void makeFrame() { frame = new JFrame("ImageViewer"); Container contentPane = frame.getContentPane(); JLabel label = new JLabel("I am a label."); contentPane.add(label); frame.pack(); frame.setVisible(true); } © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

19 Orientação a objetos com Java
Adicionando menus JMenuBar Exibido abaixo do título. Contém os menus. JMenu Por ex., File. Contém os itens de menu. JMenuItem Por ex., Open. Itens individuais. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

20 Menu Bar private void makeMenuBar(JFrame frame) {
JMenuBar menubar = new JMenuBar(); frame.setJMenuBar(menubar); // cria o menu File JMenu fileMenu = new JMenu("File"); menubar.add(fileMenu); JMenuItem openItem = new JMenuItem("Open"); fileMenu.add(openItem); JMenuItem quitItem = new JMenuItem("Quit"); fileMenu.add(quitItem); }

21 Orientação a objetos com Java
Tratamento de evento Eventos correspondem às interações de usuário com componentes. Componentes estão associados com diferentes tipos de eventos. Frames estão associados com WindowEvent. Frames estão associados com ActionEvent. Os objetos podem ser notificados quando ocorrer um evento. Esses objetos são chamados de ouvintes. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

22 Recebimento centralizado de evento
Orientação a objetos com Java Recebimento centralizado de evento Um único objeto trata de todos os eventos. Implementa a interface ActionListener. Define um método actionPerformed. Registra-se como um ouviente com cada componente. item.addActionListener(this) Precisa funcionar com o componente que encaminhou o evento. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

23 Eventos Centralizados
public class ImageViewer implements ActionListener { public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if(command.equals("Open")) { } else if (command.equals("Quit")) { private void makeMenuBar(Jframe frame) { openItem.addActionListener(this);

24 Recebimento centralizado de evento
Orientação a objetos com Java Recebimento centralizado de evento A abordagem funciona. É usada, então você deve estar ciente disso. Mas … não é bem escalonável. a identificação de componentes de seu texto é frágil. É preferível uma abordagem alternativa. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

25 Sintaxe de classe aninhada
Orientação a objetos com Java Sintaxe de classe aninhada Definições de classe podem ser aninhadas. public class Enclosing { … private class Inner { … } } © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

26 Orientação a objetos com Java
Classes internas As instâncias da classe interna estão localizadas dentro da classe que as contém. As instâncias da classe interna têm acesso aos membros privados da classe que os contém. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

27 Classes internas anônimas
Orientação a objetos com Java Classes internas anônimas Cumprem regras das classes internas. Usadas para criar objetos únicos para o qual um nome de classe não é necessário. Utilizam uma sintaxe especial. O exemplo é sempre referenciado via seu supertipo, uma vez que não tem nenhum nome de subtipo. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

28 Ouvinte de ação anônimo
Orientação a objetos com Java Ouvinte de ação anônimo JMenuItem openItem = new JMenuItem("Open"); openItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { openFile(); } }); © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

29 Elementos de classes anônimas
Orientação a objetos com Java Elementos de classes anônimas openItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) openFile(); } ); Criação de objetos anônimos Parâmetro real Definição de classe © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

30 Saia quando a janela fechar
Orientação a objetos com Java Saia quando a janela fechar frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); O WindowAdapter fornece uma implementação no-op da interface WindowListener. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

31 Orientação a objetos com Java
O projeto imageviewer © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

32 Processamento de imagens
Orientação a objetos com Java Processamento de imagens © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

33 Responsabilidades da classe
Orientação a objetos com Java Responsabilidades da classe ImageViewer Configura a estrutura GUI. ImageFileManager Métodos estáticos para carregar e salvar arquivo de imagens. ImagePanel Exibe a imagem na GUI. OFImage Modela a imagem 2D. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

34 Orientação a objetos com Java
OFImage Nossa subclasse de BufferedImage. Representa um array 2D de pixels. Métodos importantes: getPixel, setPixel getWidth, getHeight Cada pixel tem uma cor. Usamos java.awt.Color. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

35 Adicionando um ImagePanel
Orientação a objetos com Java Adicionando um ImagePanel public class ImageViewer { private JFrame frame; private ImagePanel imagePanel; private void makeFrame() Container contentPane = frame.getContentPane(); imagePanel = new ImagePanel(); contentPane.add(imagePanel); } © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

36 Orientação a objetos com Java
Carregando uma imagem public class ImageViewer { private JFrame frame; private ImagePanel imagePanel; private void openFile() File selectedFile = …; OFImage image = ImageFileManager.loadImage(selectedFile); imagePanel.setImage(image); frame.pack(); } © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

37 Gerenciadores de layout
Orientação a objetos com Java Gerenciadores de layout Gerenciam espaço limitado para componentes concorrentes. FlowLayout, BorderLayout, GridLayout, BoxLayout, GridBagLayout. Gerenciam objetos Container, por exemplo, um painel de conteúdo. Cada um impõe seu próprio estilo. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

38 Orientação a objetos com Java
FlowLayout © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

39 Orientação a objetos com Java
BorderLayout © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

40 Orientação a objetos com Java
GridLayout © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

41 Orientação a objetos com Java
BoxLayout Nota: sem redimensionamento de componente. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

42 Contêineres aninhados
Orientação a objetos com Java Contêineres aninhados Layouts sofisticados podem ser obtidos através do aninhamento de contêineres. Utilize JPanel como um contêiner básico. Cada contêiner tem seu próprio gerenciador de layout. Em geral, preferível a usar um GridBagLayout. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

43 Orientação a objetos com Java
Estruturas e cola Componentes invisíveis utilizados como espaços. Disponíveis a partir da classe Box. Estrutura: tamanho fixo. Component createHorizontalStrut(int width) Component createVerticalStrut(int height) Cola: preenche o espaço disponível. Component createHorizontalGlue() Component createVerticalGlue() © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

44 Orientação a objetos com Java
Caixas de diálogo Caixas de diálogos modais bloqueiam toda a outra interação. Forçam uma resposta do usuário. Caixas de diálogo não-modais permitem outra interação. Às vezes isso é desejável. Pode ser difícil evitar inconsistências. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

45 Caixa de diálogo padrão JOptionPane
Orientação a objetos com Java Caixa de diálogo padrão JOptionPane Caixa de diálogo de mensagem: Texto da mensagem mais um botão OK. Caixa de diálogo confirmar: Opções Yes, No, Cancel. Caixa de diálogo de entrada: Texto da mensagem e uma entrada de campo. Variações são possíveis. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

46 Uma caixa de diálogo de mensagens
Orientação a objetos com Java Uma caixa de diálogo de mensagens private void showAbout() { JOptionPane.showMessageDialog(frame, "ImageViewer\n" + VERSION, "About ImageViewer", JOptionPane.INFORMATION_MESSAGE); } © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

47 Orientação a objetos com Java
Filtros de imagem Funções aplicadas à imagem inteira. int height = getHeight(); int width = getWidth(); for(int y = 0; y < height; y++) { for(int x = 0; x < width; x++) { Color pixel = getPixel(x, y); alter the pixel's color value; setPixel(x, y, pixel); } © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

48 Adicionando mais filtros
Orientação a objetos com Java Adicionando mais filtros private void makeLighter() { if(currentImage != null) { currentImage.lighter(); frame.repaint(); showStatus("Applied: lighter"); } else { showStatus("No image loaded."); Duplicação de código? Refatore! private void threshold() { if(currentImage != null) { currentImage.threshold(); frame.repaint(); showStatus("Applied: threshold"); } else { showStatus("No image loaded."); © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

49 Adicionando mais filtros
Orientação a objetos com Java Adicionando mais filtros Defina uma superclasse Filter (abstrata). Crie subclasses específicas à função. Crie uma coleção de instâncias de subclasse em ImageViewer. Defina um método applyFilter genérico. Veja imageviewer2-0. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

50 Orientação a objetos com Java
imageviewer2-0 © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

51 Botões e layouts aninhados
Orientação a objetos com Java Botões e layouts aninhados Um GridLayout dentro de um FlowLayout dentro de um BorderLayout. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

52 Orientação a objetos com Java
Margens Utilizadas para adicionar decoração em torno dos componentes. Definidas em javax.swing.border BevelBorder, CompoundBorder, EmptyBorder, EtchedBorder, TitledBorder. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

53 Adicionando espaçamento
Orientação a objetos com Java Adicionando espaçamento JPanel contentPane = (JPanel)frame.getContentPane(); contentPane.setBorder(new EmptyBorder(6, 6, 6, 6)); // Define o gerenciador de layout com bom espaçamento contentPane.setLayout(new BorderLayout(6, 6)); imagePanel = new ImagePanel(); imagePanel.setBorder(new EtchedBorder()); contentPane.add(imagePanel, BorderLayout.CENTER); © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

54 Orientação a objetos com Java
Outros componentes Controle deslizante Spinner Painel com guias Painel de rolagem © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

55 Orientação a objetos com Java
Revisão Tenha como objetivo estruturas de aplicação coesas. Esforce-se para manter elementos da GUI separados da funcionalidade da aplicação. Componentes predefinidos para simplificar a criação de GUIs sofisticadas. Os gerenciadores de layout tratam da justaposição de componentes. Contêineres aninhados para maior controle. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

56 Orientação a objetos com Java
Revisão Muitos componentes reconhecem interações de usuário com eles. Componentes reativos entregam eventos para ouvintes. Classes internas anônimas são comumente usadas para implementar ouvintes. © 2008 by Pearson Education Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © David J. Barnes e Michael Kölling

57 Perguntas?


Carregar ppt "GUI – GRAPHIC USER INTERFACE"

Apresentações semelhantes


Anúncios Google