If you can't read please download the document
Upload
regis-pires-magalhaes
View
969
Download
4
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