Slide 1 - IME-USP

Propaganda
Programação Gráfica em Java
Swing
Aula 06
Na aula passada vimos:
• Thread
• Animação
• Técnica de desenho eficiente
(double-bufferring)
2
O que você deve ter fixado:
• Formas de se implementar um fluxo
paralelo de execução
• Passos básicos de uma animação
• Animação como monitoramento de estado
3
O que você deve ter fixado:
• Diferenças entre animação automática e
por solicitação do usuário
• Diferença entre buffer simples e duplo
• Uso do método update em animações:
manter ou não a imagem anterior?
4
Na aula de hoje veremos:
• Swing:
• Por quê Swing
• Estratégia MVC (model-view-controller)
• Componentes AWT - semelhantes
• Contêineres
• Novos componentes do Swing
5
Swing... what?
• Kit de ferramentas para construção de
interfaces gráficas com o usuário
• É parte da JFC (Java Foundation Classes)
–
–
–
–
–
AWT
Swing
Acessibilidade
Api 2D
Drag-N-Drop
• JFC é a parte maior (e mais complicada)
da plataforma Java padrão
6
Swing... how?
• Componentes swing, de modo geral não
devem ser usados com componentes
AWT
• Componentes “pesados” sempre se
sobrepõem aos componentes “leves”
• Programas que utilizam Swing aproveitam
a infra-estrutura não visual do AWT
– modelo de eventos, gerenciador de leiaute e etc.
MixPopUpTest.java
7
Swing... why?
• Portabilidade
• Peso leve == maior eficiência
• Independência do comportamento nativo
• Facilidade para criação de GUI complexa
8
Model View Controller
• Separação do modelo (dados) +
• Separação da visão (apresentação) +
• Separação do controle (comportamento) =
• Aplicações de fácil manutenção e criação
de componentes reutilizáveis
mvc.view.CadastroPessoa.java
9
A Visual Index to the Swing
Components
arquivo
10
AWT - semelhantes
• Swing tem similares a todos os
componentes AWT
• Todos são precedidos pela letra ‘J’
• Todos têm comportamento semelhante à
implementação AWT
– AWT e Swing possuem uma hierarquia paralela
QuickChange.java
11
Contêineres
• JWindow
• JFrame
– Notar a existência do método:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
• Japplet
– Apresenta diferenças importantes da classe Applet
• JComponent
12
Contêineres
• Todo container de alto nível possui um
painel de conteúdo
• O painel de conteúdo (content pane) deve
conter todos os componentes visíveis da
GUI
• As barras de menu são a exceção a essa
regra
SwingApplication.java
13
Usando contêineres
• Normalmente, acessamos o painel de
conteúdo, configuramos o seu gerenciador
de leiaute e adicionamos os componentes
• Porém existem várias camadas de um
contêiner que o programador poderia
desejar acessar
– Não entraremos em detalhes mas, como curiosidade veja a
próxima figura
14
Hierarquia de Contenção
Dica: para ver a hierarquia de contenção de um frame ou dialog do Swing,
clique em sua borda para selecioná-lo, então pressione ctrl-shfit-f1 e
15
veja o resultado na saída padrão do sistema.
Leiaute
• Swing oferece um notável gerenciador:
BoxLayout
• Cria apenas linhas ou colunas de
componentes
• Altamente flexível e simples
• Pode ser usado como alternativa ao
GridBagLayout
ListDialog.java
16
A classe Box
• É um painel que implementa o BoxLayout
por padrão
• Não é possível modificar o leiaute de um
Box
• Possui vários métodos de conveniência
para o uso do BoxLayout
MixPopUpTest.java
17
Conversão AWT-Swing... why?
• Maior número de componentes e
funcionalidades
• Componentes swing continuarão
melhorando
• Têm acessibilidade implementada por
padrão
ImageSequence.java
18
Sempre Swing ?
• É razoável usar AWT se:
• Você sabe (ou imagina) que seus usuários não
dispõem de browsers atualizados
• Se você quiser que todo internauta possa
visualizar seus applets
• Se você não espera que seus usuários
possuam versões modernas do JDK, ou do Java
Plug-in
19
O que você precisa saber...
• Diferenças entre AWT e Swing
• Acessar o painel de conteúdo dos
contêineres Swing
• Implementar MVC
20
O que você precisa saber...
• Usar BoxLayout
• Quando usar AWT
• Converter uma aplicação AWT para Swing
21
Na próxima aula veremos:
• Applet
22
Download