1 / 42

Programação Visual em Java

Programação Visual em Java. Sumário. Introdução Contentores Componentes Layouts Eventos Exemplos. 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

ryu
Télécharger la présentation

Programação Visual em Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programação Visual em Java

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

  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. 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. 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. 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. 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. contentores Aplicações

  9. Hierarquia de classes:

  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. 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. Programa OlaWindows public class OlaWindows extends javax.swing.JFrame{ public OlaWindows(String nome) { super(nome); this.setSize(400,350); this.setVisible(true); } public static void main(String[] args) { new OlaWindows(" Ola Windows"); } } Ola windows

  13. Programa OlaApplet Página HTML public class OlaApplet extends JApplet{ public void paint(Graphics g){ g.drawString("Ola Applet",10,100); } } <html> <body> <APPLET code="OlaApplet.class" width=350 height=200> </APPLET> </body> </html> Ola Applet

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

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

  16. Programa OlaApplet Página HTML public class OlaApplet extends JApplet{ public void init(){ msg = new StringBuffer(); msg.append("Iniciando o Applet . . ."); String parametro1 = getParameter("texto"); msg.append(" " + parametro1); } } <html> <body> <APPLET code="OlaApplet.class" width=350 height=200> <param name = "texto" value="isto é um parametro"> </APPLET> </body> </html> Passagem de parâmetros

  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. 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. Componentes objectos

  20. http://java.sun.com/docs/books/tutorial/uiswing/components/components.htmlhttp://java.sun.com/docs/books/tutorial/uiswing/components/components.html

  21. Componentes • Bottons • ComboBox • List • Slidder • TextField • Label • ProgressBar

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

  23. Contentores • Panel • ScrollPane • SplitPane • TabbedPane • ToolBar • InternalFrame

  24. layouts Modos de visualização

  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. 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"));

  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"));

  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);

  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"));

  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. 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. 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));

  33. Eventos Janelas em acção

  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. Eventos • Fontes, Eventos, Ouvintes

  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. 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. Interface de Eventos

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

  42. Fim

More Related