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

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

Programação Visual em Java

Apresentações semelhantes


Apresentação em tema: "Programação Visual em Java"— Transcrição da apresentação:

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) suporta:
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 Java 1.1 Java 1.2
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) Applet e JApplet
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 Ola windows public class OlaWindows extends javax.swing.JFrame{
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");

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

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

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

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 Localização dos Componentes
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) { . . . } 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


Carregar ppt "Programação Visual em Java"

Apresentações semelhantes


Anúncios Google