• Nenhum resultado encontrado

Agenda. JFC (Java FoundaNon Classes) Interfaces Gráficas: layout manager JFC. Componentes do Swing. Pluggable Look and Feel

N/A
N/A
Protected

Academic year: 2021

Share "Agenda. JFC (Java FoundaNon Classes) Interfaces Gráficas: layout manager JFC. Componentes do Swing. Pluggable Look and Feel"

Copied!
5
0
0

Texto

(1)

Interfaces  Gráficas:  layout  manager  

João  B.  Rocha-­‐Junior  

joao@ecomp.uefs.br  

 

Departamento  de    Ciências  Exatas   Universidade  Estadual  de  Feira  de  Santana  

     

Layout  manager   João  B.  Rocha-­‐Junior  

JFC  (Java  FoundaNon  Classes)  

Swing  

– componentes  

Gerênciamento  de  Layout  

– BoderLayout,  FlowLayout,  ...    

Agenda  

1  

Layout  manager   João  B.  Rocha-­‐Junior  

JFC  (Java  FoundaNon  Classes)    

– grupo  de  classes  para  auxiliar  no  

desenvolvimento  de  interfaces  gráficas  (GUIs)   – independente  de  plataforma  

JFC  versus  AWT  e  Swing  

– AWT  e  Swing  fazem  parte  do  JFC  

Swing  versus  AWT  

– AWT  foi  a  solução  adotada  inicialmente,   enquanto  Swing  é  a  plataforma  atual     – Swing  usa  parte  do  AWT  

JFC  (Java  FoundaNon  Classes)    

2   Layout  manager   João  B.  Rocha-­‐Junior  

JFC  

• Componentes  do  Swing  

– componentes  como  botão  e  lista   • Pluggable  Look  and  Feel   • Acessibilidade  

– tecnologias  assisNvas,  como  leitores  de  tela  e  displays  Braille   • Java  2D  

– tecnologias  para  incorporar  gráficos  e  imagem     • Internacionalização  

– suporte  para  aplicações  que  permitem  interagir  com   usuários  que  falam  diferentes  línguas  

3  

Componentes  do  Swing  

Pluggable  Look  and  Feel  

• As  figuras  abaixo  são  extraídas  de  um  mesmo   programas  com  diferentes  look  and  feel  

(2)

Layout  manager   João  B.  Rocha-­‐Junior  

Java  2D  

http :// st en dh al ga me .o rg /

6   Layout  manager   João  B.  Rocha-­‐Junior  

Vários  componentes  

– listas,  menus,  áreas  de  texto,  botões,  ...  

Os  componentes  são  organizados  em  um  

hierarquia  de  armazenamento  (containers)  

– containers  de  nível  mais  alto,    ex:  JFrame   – containers  intermediário,  ex:  JPanel  

Um  container  é  um  componente  que  pode  

conter  outros  componentes  

– descendem  da  classe  java.awt.Container    

Swing  

7  

Layout  manager   João  B.  Rocha-­‐Junior  

Todo  programa  que  uNliza  o  Swing  tem  ao  

menos  um  container  de  nível  mais  alto  

O  container  de  nível  mais  alto  é  quem  provê  

todo  o  suporte  para  pintar  os  componentes  e  

gerenciar  os  eventos  

Existem  três  container  de  nível  mais  alto  

– JFrame  (janela  principal)  

– JDialog  (janela  secundária)  

– JApplet  (executa  dentre  de  um  browser)  

Containers  de  nível  mais  alto  

8   Layout  manager   João  B.  Rocha-­‐Junior   9  

Layout  manager   João  B.  Rocha-­‐Junior  

Containers  de  nível  mais  alto  

• Todo  container  de  nível  mais  alto  tem  

– um  container  de  conteúdo  (ContentPane)   – um  container  de  menu  (MenuBar)    

Frame   MenuBar   ContentPane  

10   Layout  manager   João  B.  Rocha-­‐Junior  

JFrame  

• JFrame  é  uma  janela  que  tem  uma  borda,  ltulo  e   botões  para  fechá-­‐la  e  minimizá-­‐la  

• Aplicações  para  Desktop  em  Java  uNlizam  ao   menos  um  JFrame  

• Métodos  principais  

– void setTitle(String title):  define  um  ltulo  

– void setVisible(boolean v):  torna  o  frame  visível  

– void setDefaultCloseOperation(int op)  :  realiza  

uma  determinada  operação  ao  fechar.  Mais  comum:   JFrame.EXIT_ON_CLOSE  

(3)

Layout  manager   João  B.  Rocha-­‐Junior  

Todo  container  de  nível  mais  alto  contém  um  

container  de  conteúdo  (content  pane)  

Os  componentes  (JBupon,  JLabel,  ...)  devem  

ser  adicionados  ao  container  de  conteúdo  e  

não  ao  container  de  nível  mais  alto!  

– componentes  são  adicionados  no  container   através  do  método  add

– os  containers  uNlizam  um  layout  manager  para   posicionar  os  componentes  adicionados  

Container  de  conteúdo  

12   Layout  manager   João  B.  Rocha-­‐Junior  

Exemplo  

import javax.swing.*; import java.awt.*; public class HelloWorld {

public static void main(String[] args){

JFrame frame = new JFrame("HelloWorld"); frame.setSize(100,100);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label = new JLabel("Hello world!", Jlabel.CENTER); frame.getContentPane().add(label); frame.setVisible(true); } } 13   Container  de   nível  mais  alto  

Container  de   conteúdo  

Layout  manager   João  B.  Rocha-­‐Junior  

JComponent  é  a  classe  base  para  todos  os  

componentes  Swing  como  JBupon  

Todos  os  componentes  que  herdam  de  

JComponent  devem  ser  adicionados  a  

hierarquia  de  containers  

A  classe  JComponent  provê  

– look  and  feel,  tratamento  de  eventos  de  teclado,  

ferramenta  para  exibir  dica  (toolNp),  infra-­‐ estrutura  para  desenho,  suporte  a  bordas,  etc.  

JComponent  

14   Layout  manager   João  B.  Rocha-­‐Junior  

JBupon  e  JLabel:  botão  e  rótulo  

– setText/getText  para  atualizar  e  ler  o  texto    

JTextField:  caixa  de  texto  

– construtor:  JTextField(int  columns)   – setText/getText  para  atualizar  e  ler  o  texto  

Inicialmente  os  componentes  não  tem  ação  

Adicionando  informação  a  um  JComponent  

– putClientProperty(key:Object,value:Object);  

– Object  getClientProperty(key:Object);  

Componentes  

15  

Também  conhecidos  como  panels  e  panes  

Eles  simplificam  o  posicionamento  de  outros  

componentes  que  são  adicionados  neles  

Exemplos  de  containers  de  conteúdo  

– JPanel  (mais  comum)   – JScrollPane   – JTabbedPane  

Você  pode  definir  o  layout  de  um  container  

através  do  método  setLayout()

Containers  de  conteúdo  

Definição  

– processo  que  consiste  em  determinar  o  tamanho  e   a  posição  dos  componentes  na  tela  

Em  Java,  o  gerenciamento  de  layout  é  feito  

através  dos  Layout  Managers  

Existem  vários  Layout  Managers  pré-­‐definidos  

– absoluto  (não  tem  gerenciador  de  layout)  

– Alguns:  BorderLayout,  GridLayout,  FlowLayout,   BoxLayout,  GridBagLayout,  CardLayout  

Gerenciamento  de  Layout  

(4)

Layout  manager   João  B.  Rocha-­‐Junior  

O  tamanho  e  a  posição  de  cada  componente  

deve  ser  especificado  pelo  programador  

Não  ajusta  bem  quando  o  container  top-­‐level  

muda  de  tamanho  

Requer  um  ajuste  complexo  quando  

mudamos  de  sistema  operacional  

– problemas  devido  a  resoluções,  tamanhos  de   fonte,  etc.  

Deve  ser  evitado!  

Absoluto  (sem  Layout  Manager)  

18   Layout  manager   João  B.  Rocha-­‐Junior  

O  Layout  Manager  decide  onde  os  

componentes  devem  ser  posicionados  na  tela  

– isso  é  feito  automaNcamente  quando  adicionamos   um  componente  no  panel/pane  

Exemplo  

– BorderLayout  (posição  relaNva)   add(label,BorderLayout.CENTER); – FlowLayout  GridLayout  (ordem  de  adição)  

add(label);

Usando  um  Layout  Manager  (1)  

19  

Layout  manager   João  B.  Rocha-­‐Junior  

BorderLayout  

• Cinco  áreas  para  armazenar  componentes  

– north,  south,  east,  west,  e  center  

– north,  south,  east,  west  tem  um  atributo  fixo  

– center  fica  com  todo  o  espaço  restante  

20   Layout  manager   João  B.  Rocha-­‐Junior  

Exemplo  

Container container = new JPanel(new BorderLayout()); JFrame frame = new JFrame("BorderLayoutExample"); frame.setSize(300,300);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(container);

JLabel label = new JLabel("Center",JLabel.CENTER); container.add(label, BorderLayout.CENTER);

container.add(new JButton("North"), BorderLayout.NORTH); container.add(new JButton("South"), BorderLayout.SOUTH); container.add(new JButton("East"), BorderLayout.EAST); container.add(new JButton("West"), BorderLayout.WEST); frame.setVisible(true);

21  

Layout  manager   João  B.  Rocha-­‐Junior  

Os  componentes  são  adicionados  no  panel/

pane  da  esquerda  para  direita  

– iniciam  uma  nova  linha  caso  necessário  

Os  componentes  tem  tamanho  default  

Este  é  o  Layout  default  de  JPanel  

FlowLayout  

22   Layout  manager   João  B.  Rocha-­‐Junior  

GridLayout  

• Posiciona  os  componentes  em  um  grid     – o  programador  define  o  número  de  linhas  e  colunas     • Os  componentes  são  adicionados  da  esquerda  para  

direta,  e  do  topo  para  baixo  

• Força  os  componentes  a  assumirem  o  tamanho  da   célula  do  grid  

(5)

Layout  manager   João  B.  Rocha-­‐Junior  

BoxLayout  

• Os  objetos  são  alinhados  em  uma  linha  ou  coluna   • Os  objetos  usam  o  tamanho  default  

• Criando  um  BoxLayout  

Box.createHorizontalBox(); Box.createVerticalBox();

24   Layout  manager   João  B.  Rocha-­‐Junior  

CardLayout  

• Permitem  que  vários  componentes  (JPanel)   comparNlhem  a  mesma  área  na  tela    

• Conceitualmente  cada  JPanel  corresponde  a  uma   carta.  As  cartas  ficam  uma  sobre  as  outras  

– o  usuário  decide  a  carta  que  deseja  exibir  

25  

Layout  manager   João  B.  Rocha-­‐Junior  

GridBagLayout  

• GridBagLayout  é  o  mais  flexível  e  complexo  Layout  

Manager  

• Os  componentes  são  adicionados  seguindo  um  grid   – alguns  componentes  podem  ocupar  mais  de  uma  célula   – colunas  e  linhas  podem  ter  tamanhos  (width/length)  

diferentes  

26   Layout  manager   João  B.  Rocha-­‐Junior  

Vários  Layout  Managers  podem  ser  

combinados  para  compor  telas  complexas  

Combinando  Layout  Managers  

27  

Swing  tem  vários  componentes  

Os  componentes  são  organizados  em  um  

hierarquia  de  armazenamento  (containers)  

– um  container  pode  conter  outros  componentes  

– componentes  uNlizam  um  layout  manager  

Gerenciamento  de  layout  

– processo  que  consiste  em  determinar  o  tamanho  

e  a  posição  dos  componentes  na  tela  

Resumindo  (1)  

Créditos  

• Alguns  slides  uNlizados  nesta  apresentação  foram  

baseados  nos  seguintes  slides   – Adam  Carmi,  "IntroducNon  to  JFC  Swing"  

– Ricardo  Linden,  "Interfaces  Gráficas  (GUIs)  em  Java  usando   Swing  Parte  I  -­‐  O  básico"  

– Ricardo  Linden,  "Interfaces  Gráficas  (GUIs)  em  Java  usando   Swing  Parte  II  –  Tratando  Eventos"  

Referências

Documentos relacionados

• Recomendamos que junto com as folhinhas de Português sejam trabalhadas com as crianças as páginas 150 à 156 do livro de Português.. Marque, com um x, a

Este questionário será preenchido para cada residente que esteja a tomar antibiótico por uma indicação relacionada com as vias urinárias e/ou apresenta sinais/sintomas

Dedicamos, desta forma, um dia para Intervenção eco-guiada e orientada por TC, desde os aspetos mais básicos que qualquer radiologista pode realizar na sua prática

Estes modelos podem ser utilizados como amplificadores de potência para executar programas de celulares, MP3 Players e similares, desde que tais aparelhos sejam projetados para

Museun d’art moderne de São Paulo 1958 Maison Pereira 1967 Tribunal 1970 Banque Bandeirantes 1990 Clube Paulistano 1957 MUBE 1988.. L’architecture moderne a

O Parque Ecológico da Lagoa da Jansen é um dos cartões postais de São Luís, funciona como um ambiente de lazer para as comunidades ao seu entorno e possui em sua área

Friedrich von Schiller, nas Cartas sobre a educafiio estitica do homem, define como func;ao da arte a educac;ao pela beleza, que permite aceder ao Estado estetico

Sim, as universidades têm de mudar a sua vida, fazer uma reflexão profunda sobre as últimas décadas e a forma como as agendas da excelência, da internacionalização e