Java 17 Swing

Embed Size (px)

Citation preview

Interfaces grficas usando Swing

Regis Pires Magalhes [email protected]

1

AWT e Swing

AWT (Abstract Window Toolkit)

Prov facilidades para interface de usurio (IU) em Java. Insuficiente para suportar interfaces de usurio complexas. Conjunto de componentes de UI muito mais completo, flexvel e portvel do que o provido pela AWT. Conjunto de componentes grficos customizveis cujo lookand-feel (L&F) pode ser ditado em tempo de execuo. No substitui a AWT. Construdo no topo das classes que compem o ncleo das bibliotecas AWT. Distingue claramente os dados que um componente mostra (modelo) do display dos dados (viso).

Swing

2

Swing

O Swing utiliza uma variante simplificada do design MVC denominada model-delegate

Este projeto combina a viso e o controlador em um nico componente => UI delegate O MVC no Swing se apresenta como dois componentes

Modelo Mantm informao sobre o estado do componente UI delegate Responsvel desenhar os componentes na tela e manipulareventos na GUI

3

Containers de Alto Nvel

Toda aplicao Swing possui pelo menos um container de alto nvel

Usualmente uma instncia 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 contedo

Uma hierarquia possui um container de alto nvel como raiz Contm os componentes visveis contidos no container A barra de menus fica fora do content pane

Cada container de alto nvel possui um content pane

Podem possuir uma barra de menus opcional

4

Containers de Alto Nvel

5

Aplicaes Swing

Containers de Alto Nvel

Hierarquia de componentes

Frame principal Menu bar Content pane

6

Hierarquia Comum de Containers

JFrame => top-level container Content pane e JPanel => containers intermedirios JButton e JLabel => componentes

7

Aplicaes Swing

Containers de Alto Nvel

Adio de componentes ao content pane

Basta obter o content pane do container e ento adicionar o componente frame.getContentPane().add(label,BorderLayout.CENTER);

8

Look & Feel

Escolha do Look & Feel

Usualmente feita no mtodo main

public static void main(String[] args) { // Escolha do L&F default try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { } // Criao e apresentao 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 => tambm conhecido como Metal "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" Windows L&F

Atualmente s pode ser usado em sistemas Windows

10

Aplicaes Swing

Exemplos de Componentes

JButton

Criao de botes com cones ImageIcon Uso de mnemonic Habilitao e desabilitao Uso de aes Registro de action listener Configurao de tooltip Texto de botes em HTML

11

Aplicaes Swing

Exemplos de Componentes

JCheckBox

Uso de mnemonic Marcar e desmarcar Registro de action listener Modificao de estado

12

Aplicaes Swing

Exemplos de Componentes

JRadioButton

Uso de mnemonic Criao de ButtonGroup Registro de action listener Modificao de opo

13

Aplicaes Swing

Exemplos de Componentes

JTabbedPane

Adio de abas Modificao de aba selecionada

14

Aplicaes Swing

Exemplos de Componentes

JSplitPane

Configurao geral e orientao do split Posicionamento do divisor Restrio de tamanho do divisor SplitPane aninhados

15

Aplicaes 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

Aplicaes Swing

Exemplos de Componentes

JTable

Pode utilizar diversos tipos de renderizadores para os componentes contidos nas clulas Alta flexibilidade para definir a aparncia da tabela

17

Aplicaes 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

Aplicaes Swing

Layout Managers

BoxLayout

Permite posicionar elementos de forma linear De cima para baixo Da esquerda para a direita

19

Aplicaes Swing

Layout Managers

FlowLayout

Permite posicionar elementos linearmente Da esquerda para a direita

Caso no caibam em uma linha, novas linhas so adicionadas automaticamente

public FlowLayout() public FlowLayout(int alignment) public FlowLayout(int alignment, int horizontalGap, int verticalGap)

20

Aplicaes Swing

Layout Managers

GridLayout

Dispe os componentes em um grid de linhas e colunas Cada componente ocupa o espao exato de uma clula public GridLayout(int rows, int columns) public GridLayout(int rows, int columns, int horizontalGap, int verticalGap)

21

Aplicaes Swing

Layout Managers

GridBagLayout

Layout mais flexvel e mais complexo do Swing Dispe os componentes em um grid de linhas e colunas Componentes podem se estender a vrias linhas ou colunas Configuraes so passadas para o layout atravs de uma instncia da classe GridBagConstraints

22