Você está na página 1de 22

Interfaces gráficas usando

Swing

Regis Pires Magalhães


regispiresmag@gmail.com

1
AWT e Swing

➔ AWT (Abstract Window Toolkit)


 Provê facilidades para interface de usuário (IU) em Java.
 Insuficiente para suportar interfaces de usuário complexas.
➔ Swing
 Conjunto de componentes de UI muito mais completo,
flexível e portável do que o provido pela AWT.
 Conjunto de componentes gráficos customizáveis cujo look-
and-feel (L&F) pode ser ditado em tempo de execução.
 Não substitui a AWT.
 Construído no topo das classes que compõem o núcleo das
bibliotecas AWT.
 Distingue claramente os dados que um componente mostra
(modelo) do display dos dados (visão).

2
Swing

➔ O Swing utiliza uma variante simplificada do


design MVC denominada model-delegate
 Este projeto combina a visão e o controlador em um
único componente => UI delegate
 O MVC no Swing se apresenta como dois
componentes
 Modelo
• Mantém informação sobre o estado do componente
 UI delegate
• Responsável desenhar os componentes na tela e manipular
eventos na GUI

3
Containers de Alto Nível

 Toda aplicação Swing possui pelo menos um


container de alto nível
 Usualmente é uma instância de JFrame ou JDialog.
 Provê suporte para que os componentes possam realizar
pintura e tratamento de eventos.
 Para ser apresentado na tela, todo componente GUI
deve fazer parte de uma hierarquia de conteúdo
 Uma hierarquia possui um container de alto nível como raiz
 Cada container de alto nível possui um content pane
 Contém os componentes visíveis contidos no container
 Podem possuir uma barra de menus opcional
 A barra de menus fica fora do content pane

4
Containers de Alto Nível

5
Aplicações Swing

➔ Containers de Alto Nível


 Hierarquia de componentes
 Frame principal
 Menu bar
 Content pane

6
Hierarquia Comum de Containers

 JFrame => top-level container


 Content pane e JPanel => containers intermediários
 JButton e JLabel => componentes

7
Aplicações Swing

➔ Containers de Alto Nível


 Adição de componentes ao content pane
 Basta obter o content pane do container e então adicionar o
componente
• frame.getContentPane().add(label,
BorderLayout.CENTER);

8
Look & Feel

➔ Escolha do Look & Feel


 Usualmente feita no método main
public static void main(String[] args) {
// Escolha do L&F default
try {
UIManager.setLookAndFeel(
UIManager.getCrossPlatformLookAndFeelClassName());
} catch (Exception e) { }

// Criação e apresentação da GUI


...
}

9
Look & Feel

➔ Escolha do Look & Feel


 Argumento para UIManager.setLookAndFeel
 UIManager.getCrossPlatformLookAndFeelClassName()
• L&F que funciona em todas as plataformas (Java L&F)
 UIManager.getSystemLookAndFeelClassName()
• L&F para a plataforma em uso
 Plataforma Windows => Windows L&F
 Plataforma Mac OS => Mac OS L&F
 Plataforma Unix (Solaris, Linux, ...) => CDE/Motif L&F
 "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
• GTK+ L&F => introduzido na release 1.4.2
 "javax.swing.plaf.metal.MetalLookAndFeel"
• Java L&F => também conhecido como Metal
 "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
• Windows L&F
 Atualmente só pode ser usado em sistemas Windows

10
Aplicações Swing

➔ Exemplos de Componentes
 JButton
 Criação de botões com ícones
• ImageIcon
 Uso de mnemonic
 Habilitação e desabilitação
 Uso de ações
 Registro de action listener
 Configuração de tooltip
 Texto de botões em HTML

11
Aplicações Swing

➔ Exemplos de Componentes
 JCheckBox
 Uso de mnemonic
 Marcar e desmarcar
 Registro de action listener
• Modificação de estado

12
Aplicações Swing

➔ Exemplos de Componentes
 JRadioButton
 Uso de mnemonic
 Criação de ButtonGroup
 Registro de action listener
• Modificação de opção

13
Aplicações Swing

➔ Exemplos de Componentes
 JTabbedPane
 Adição de abas
 Modificação de aba selecionada

14
Aplicações Swing

➔ Exemplos de Componentes
 JSplitPane
 Configuração geral e orientação do split
 Posicionamento do divisor
 Restrição de tamanho do divisor
 SplitPane aninhados

15
Aplicações Swing

➔ Exemplos de Componentes
 JTable
 Cria uma tabela para apresentar dados tabulares
• Muito utilizado para mostrar tabelas detalhe de tabelas mestre
 Lado N de relacionamento 1:N
 Construtores
• JTable(Object[][] rowData, Object[] columnNames)
• JTable(Vector rowData, Vector columnNames)
 Pode utilizar diversos modelos de dados

16
Aplicações Swing

➔ Exemplos de Componentes
 JTable
 Pode utilizar diversos tipos de renderizadores para os
componentes contidos nas células
• Alta flexibilidade para definir a aparência da tabela

17
Aplicações Swing

➔ Layout Managers
 BorderLayout
 Layout default
 Posiciona os componentes em 5 áreas
• Norte, sul, leste, oeste e centro
 BorderLayout(int horizontalGap, int verticalGap)
 setHgap(int) e setVgap(int)

18
Aplicações Swing

➔ Layout Managers
 BoxLayout
 Permite posicionar elementos de forma linear
• De cima para baixo
• Da esquerda para a direita

19
Aplicações Swing

➔ Layout Managers
 FlowLayout
 Permite posicionar elementos linearmente
• Da esquerda para a direita
 Caso não caibam em uma linha, novas linhas são
adicionadas automaticamente
 public FlowLayout()
 public FlowLayout(int alignment)
 public FlowLayout(int alignment,
int horizontalGap, int verticalGap)

20
Aplicações Swing

➔ Layout Managers
 GridLayout
 Dispõe os componentes em um grid de linhas e colunas
 Cada componente ocupa o espaço exato de uma célula
 public GridLayout(int rows, int columns)
 public GridLayout(int rows, int columns,
int horizontalGap, int verticalGap)

21
Aplicações Swing

➔ Layout Managers
 GridBagLayout
 Layout mais flexível e mais complexo do Swing
 Dispõe os componentes em um grid de linhas e colunas
• Componentes podem se estender a várias linhas ou colunas
 Configurações são passadas para o layout através de uma
instância da classe GridBagConstraints

22

Você também pode gostar