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

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

1 Programação Visual em Java. 2 Sumário Introdução Contentores Componentes Layouts Eventos Exemplos.

Apresentações semelhantes


Apresentação em tema: "1 Programação Visual em Java. 2 Sumário Introdução Contentores Componentes Layouts Eventos Exemplos."— Transcrição da apresentação:

1 1 Programação Visual em Java

2 2 Sumário Introdução Contentores Componentes Layouts Eventos Exemplos

3 3 Introdução Interfaces gráficas são compostas por: Contentores Janelas, painéis Componentes botões, menus, caixas de texto layouts Disposição dos componentes nos contentores Eventos Rato, teclado, sistema operativo

4 4 Introdução (Graphical User Interface - Interface Gráfica do Utilizador) : AWT (Abstract Window Toolkit) Infra-estrutura mínima de interface gráfica É implementada sobre componentes nativos do sistema operativo. Limitado em recurso Diferentes plataformas possuem aparência diferente Bugs e incompatibilidades entre plataformas

5 5 Introdução JFC (Java Foundation Classes) Implementado inteiramente em Java. Oferece uma interface muito mais rica e componentes mais flexíveis. É preciso importar java.awt e java.swing para usar a JFC suporta: definição de botões, menus, etc desenho 2D (java.awt.geom) funcionalidades drag-and-drop (java.awt.dnd) API com acessibilidade a usuários (javax.accessibility

6 6 Histórico Java 1.0 Interface executa de forma medíocre em todas as plataformas Modelo de eventos arcaico Java 1.1 Melhora o modelo de eventos por delegação usando o design pattern Observer Java 1.2 JFC/Swing substitui totalmente os componentes AWT Mantém e estende a interface de eventos e layout

7 7 Componentes Todos os elementos de uma aplicação são componentes Principais métodos (chamados pelo sistema): void paint (java.awt.Graphics g) void repaint() void update (java.awt.Graphics g) Outros métodos importantes: getSize() e setSize () getLocation e setLocation getForeground e setForeground getFont e setFont setEnable setVisible

8 8 contentores Aplicações

9 9 Hierarquia de classes:

10 10 Classes Contentoras Frame (AWT) e JFrame (Swing) Servem de base para qualquer aplicação gráfica possui uma barra de título e características para receber menus e outros componentes. Applet e JApplet Tipo de Panel (JPanel) que serve de base para aplicações que se executam dentro de browsers Pode ser inserido dentro de uma página HTML e ocupar o contexto gráfico do browser Dialog e JDialog Usada para definir janelas de diálogo para entrada de dados

11 11 Aplicações visuais Aplicações gráficas em Java: Applets: componentes iniciados via browser Aplicações stand alone iniciados pelo sistema operativo Capturam eventos do sistema Rato, teclado,... Desenham-se sobre um contexto gráfico fornecido pelo Sistema operativo Aplicação gráfica Browser Fornece os recursos gráficos Controla o seu ciclo de vida Inicio, fim,... Possuem restrições de segurança

12 12 Ola windows Programa OlaWindows public class OlaWindows extends javax.swing.JFrame{ public OlaWindows(String nome) { public OlaWindows(String nome) {super(nome);this.setSize(400,350);this.setVisible(true);} public static void main(String[] args) { new OlaWindows(" Ola Windows"); } } public class OlaWindows extends javax.swing.JFrame{ public OlaWindows(String nome) { public OlaWindows(String nome) {super(nome);this.setSize(400,350);this.setVisible(true);} public static void main(String[] args) { new OlaWindows(" Ola Windows"); } }

13 13 Ola Applet Programa OlaApplet public class OlaApplet extends JApplet{ public void paint(Graphics g){ public void paint(Graphics g){ g.drawString("Ola Applet",10,100); g.drawString("Ola Applet",10,100); }} public class OlaApplet extends JApplet{ public void paint(Graphics g){ public void paint(Graphics g){ g.drawString("Ola Applet",10,100); g.drawString("Ola Applet",10,100); }} Página HTML

14 14 Applets: ciclo de vida Não têm função main

15 15 Ola Applet Programa OlaApplet public class OlaApplet extends JApplet{ StringBuffer msg ; StringBuffer msg ; public void init(){ public void init(){ msg = new StringBuffer(); msg = new StringBuffer(); msg.append("Iniciando o Applet..."); msg.append("Iniciando o Applet..."); } public void start(){ public void start(){ msg.append("Começando o Applet..."); msg.append("Começando o Applet..."); } public void stop(){ public void stop(){ msg.append("Parando o Applet..."); msg.append("Parando o Applet..."); } public void destroy(){ public void destroy(){ msg.append("Destruindo o Applet..."); msg.append("Destruindo o Applet..."); } public void paint(Graphics g){ public void paint(Graphics g){ g.drawString(msg.toString(),10,100); g.drawString(msg.toString(),10,100); } } public class OlaApplet extends JApplet{ StringBuffer msg ; StringBuffer msg ; public void init(){ public void init(){ msg = new StringBuffer(); msg = new StringBuffer(); msg.append("Iniciando o Applet..."); msg.append("Iniciando o Applet..."); } public void start(){ public void start(){ msg.append("Começando o Applet..."); msg.append("Começando o Applet..."); } public void stop(){ public void stop(){ msg.append("Parando o Applet..."); msg.append("Parando o Applet..."); } public void destroy(){ public void destroy(){ msg.append("Destruindo o Applet..."); msg.append("Destruindo o Applet..."); } public void paint(Graphics g){ public void paint(Graphics g){ g.drawString(msg.toString(),10,100); g.drawString(msg.toString(),10,100); } }

16 16 Passagem de parâmetros Programa OlaApplet public class OlaApplet extends JApplet{ public void init(){ public void init(){ msg = new StringBuffer(); msg = new StringBuffer(); msg.append("Iniciando o Applet..."); msg.append("Iniciando o Applet..."); String parametro1 = getParameter("texto"); String parametro1 = getParameter("texto"); msg.append(" " + parametro1); msg.append(" " + parametro1); }} public class OlaApplet extends JApplet{ public void init(){ public void init(){ msg = new StringBuffer(); msg = new StringBuffer(); msg.append("Iniciando o Applet..."); msg.append("Iniciando o Applet..."); String parametro1 = getParameter("texto"); String parametro1 = getParameter("texto"); msg.append(" " + parametro1); msg.append(" " + parametro1); }} Página HTML

17 17 Restrições dos applets (sandbox) Não pode carregar bibliotecas externas Não pode ler ou escrever arquivos na máquina cliente Não pode fazer ligações de rede a não ser para a máquina de onde veio Não pode iniciar a execução de nenhum programa na máquina do cliente Não tem acesso à maior parte das propriedades do sistema Janelas abertas têm aviso de segurança Várias restrições podem ser flexibilizadas se o applet for assinado

18 18 Vantagens / desvantagens dos applets Desvantagens Restrições de segurança Tempo de download Incompatibilidade com browsers Vantagens Facilidade de realizar comunicação em rede Possibilidade de abrir janelas externas Capacidade de estender o browser em recursos de segurança, protocolos de rede, capacidade gráfica Aplicação sempre atualizada Capacidade de interagir com a página via JavaScript

19 19 Componentes objectos

20 20 omponents/components.html

21 21 Componentes Bottons ComboBox List Slidder TextField Label ProgressBar

22 22 Container pane = this.getContentPane(); pane.add( new Button("ola")); pane.add( new Button("ola")); Adicionar Componentes

23 23 Contentores Panel ScrollPane SplitPane TabbedPane ToolBar InternalFrame

24 24 layouts Modos de visualização

25 25 Layouts Filosofia da linguagem JAVA programas portáveis interface adaptável. Localização dos Componentes não é indicada por um par ordenado (x,y) C++ builder Gestor de Apresentação LayoutManager. Adapatação automática dos componentes Pouco flexiveis para o programador Vários layoutManager Possibilidade de escrever novos layoutManager

26 26 FlowLayout Coloca os componentes em fila da esquerda superior do contentor para a direita. Respeita o tamanho preferido dos componentes É o padrão do JPanel. JPanel c =new JPanel(); c.add(new JButton("1")); c.add(new JTextField(9)); c.add(new JButton("dois")); c.add(new JButton("três")); JPanel c =new JPanel(); c.add(new JButton("1")); c.add(new JTextField(9)); c.add(new JButton("dois")); c.add(new JButton("três"));

27 27 GridLayout Divide o contentor em linhas e colunas. Permite definir uma matriz de células onde são colocados os componentes. Coloca os componentes da esquerda para a direita, de cima para baixo. Todos os componentes terão o mesmo tamanho. Não respeita o tamanho original dos componentes JPanel c =new JPanel(); c.setLayout(new GridLayout(2,2)); c.add(new JButton(um")); c.add(new JTextField(5)); c.add(new JButton("dois")); c.add(new JButton("três")); JPanel c =new JPanel(); c.setLayout(new GridLayout(2,2)); c.add(new JButton(um")); c.add(new JTextField(5)); c.add(new JButton("dois")); c.add(new JButton("três"));

28 28 BorderLayout Divide um contentor em cinco regiões: BorderLayout.CENTER BorderLayout.NORTH BorderLayout.EAST BorderLayout.SOUTH BorderLayout.WEST Quando se adiciona um componente, é necessário especificar em qual das áreas ele deve ser adicionado. Ex.: add(butOK, BorderLayout.WEST); O Componente ocupa todo o espaço! Cada região contém apenas um componente JPanel c =new JPanel(new BorderLayout()); JButton b1=new JButton("1"); c.add(b1,BorderLayout.NORTH); JButton b2=new JButton("2"); c.add(b2,BorderLayout.EAST); JButton b3=new JButton("3"); c.add(b3,BorderLayout.SOUTH); JButton b4=new JButton("4"); c.add(b4,BorderLayout.WEST); JButton b5=new JButton("5"); c.add(b5,BorderLayout.CENTER); JPanel c =new JPanel(new BorderLayout()); JButton b1=new JButton("1"); c.add(b1,BorderLayout.NORTH); JButton b2=new JButton("2"); c.add(b2,BorderLayout.EAST); JButton b3=new JButton("3"); c.add(b3,BorderLayout.SOUTH); JButton b4=new JButton("4"); c.add(b4,BorderLayout.WEST); JButton b5=new JButton("5"); c.add(b5,BorderLayout.CENTER);

29 29 BoxLayout Respeita o tamanho preferido dos componentes Coloca os componentes numa linha ou coluna. BoxLayout.X_AXIS para componentes em linha BoxLayout.Y_AXIS para componentes em coluna JPanel c =new JPanel(); c.setLayout(new BoxLayout(c,BoxLayout.Y_AXIS)); c.add(new JButton(um")); c.add(new JButton(dois)); c.add(new JButton(três")); c.add(new JButton(quatro")); JPanel c =new JPanel(); c.setLayout(new BoxLayout(c,BoxLayout.Y_AXIS)); c.add(new JButton(um")); c.add(new JButton(dois)); c.add(new JButton(três")); c.add(new JButton(quatro"));

30 30 CardLayout Comporta-se como uma pilha, Só o objecto que estiver no topo é visível. Métodos: first(Container) last(Container) next(Container) previous(Container) show(Container, String)

31 31 NULL Layout Layout null Utilizado para desligar o gestor de layout pane.setLayout (null); A partir desta instrução é necessário a definição da posição e o do tamanho de cada componente componente.setBounds (x, y, larg, alt);

32 32 Layouts Compostos Container caixa = janela.getContentPane(); JPanel painel1 =new JPanel(); JPanel painel2 =new JPanel(); caixa.setLayout(new GridLayout(2,1)); painel1.setLayout(new GridLayout(2,2)); painel2.setLayout(new FlowLayout(FlowLayout.CENTER)); Container caixa = janela.getContentPane(); JPanel painel1 =new JPanel(); JPanel painel2 =new JPanel(); caixa.setLayout(new GridLayout(2,1)); painel1.setLayout(new GridLayout(2,2)); painel2.setLayout(new FlowLayout(FlowLayout.CENTER));

33 33 Eventos Janelas em acção

34 34 Eventos Realizam o trabalho útil numa aplicação Desencadeiam a execução de métodos Dependem do evento Dependem do componente São geridos por objectos de eventos java.util.EventObject Listeners

35 35 Eventos Fontes, Eventos, Ouvintes

36 36 java.util.EventObject Todo o evento tem um objeto que é sua fonte Object fonte = evento.getSource(); Métodos de ouvintes (listeners) que desejam tratar eventos, recebem eventos como argumento public void eventoOcorreu(EventObject evento) { Object fonte = evento.getSource();... } Ouvintes precisam ser registrados nas fontes Quando ocorre um evento, um método de todos os ouvintes registrados é chamado e evento é passado como argumento button.addActionListener(ouvinte1);

37 37 Tipos de Eventos java.awt.event ActionEvent (fonte: componentes de ação) MouseEvent (fonte: componentes afectados pelo rato) ItemEvent (fonte: checkboxes e similares) AdjustmentEvent (fonte: scrollbars) TextEvent (fonte: componentes de texto) WindowEvent (fonte: janelas) FocusEvent (fonte: componentes em geral) KeyEvent (fonte: componentes afectados pelo teclado)...

38 38 Interface de Eventos

39 39 Adapters Alguns listeners possuem uma classe Adapter que implementa todos os métodos, sem instruções Implementação vazia: {} Só existe para listeners que têm mais de um método São úteis quando um Ouvinte precisa implementar apenas um dos vários métodos de um Listener Pode sobrepor a implementação desejada do método do Adapter e não precisa se preocupar com os outros Não são úteis em ouvintes que já estendem outras classes ou quando implementam diferentes listeners Eliminação de métodos O nome do adapter é semelhante ao do Listener MouseListener: MouseAdapter WindowListener: WindowAdapter

40 40 Eventos Exemplo: JButton button = new JButton("Fonte"); ActionListener ouvinte1 = new OuvinteDoBotao(); MouseListener ouvinte2 = new OuvinteDeCliques(); button.addActionListener(ouvinte1); button.addMouseListener(ouvinte2); O mesmo objeto que é fonte às vezes também é listener, se implementar as interfaces É necessário registrar a fonte ao listener o objeto não adivinha que ele mesmo tem que capturar seus eventos this.addWindowListener(this);

41 41 Exemplo public class NewJFrame extends javax.swing.JFrame { public NewJFrame() { botao = new javax.swing.JButton(); botao = new javax.swing.JButton();botao.setText("click"); botao.addActionListener( botao.addActionListener( new java.awt.event.ActionListener() { new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { public void actionPerformed(java.awt.event.ActionEvent evt) { botaoActionPerformed(evt); } botaoActionPerformed(evt); } }); }); private void botaoActionPerformed(ActionEvent evt) { JOptionPane.showMessageDialog(this,"Respondi " + evt.getSource()); }} public class NewJFrame extends javax.swing.JFrame { public NewJFrame() { botao = new javax.swing.JButton(); botao = new javax.swing.JButton();botao.setText("click"); botao.addActionListener( botao.addActionListener( new java.awt.event.ActionListener() { new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { public void actionPerformed(java.awt.event.ActionEvent evt) { botaoActionPerformed(evt); } botaoActionPerformed(evt); } }); }); private void botaoActionPerformed(ActionEvent evt) { JOptionPane.showMessageDialog(this,"Respondi " + evt.getSource()); }}

42 42 Fim


Carregar ppt "1 Programação Visual em Java. 2 Sumário Introdução Contentores Componentes Layouts Eventos Exemplos."

Apresentações semelhantes


Anúncios Google