Download - Java 17 Swing
Transcript
- 1. Interfaces grficas usando Swing
-
- Regis Pires Magalhes
-
- [email_address]
-
2. AWT e Swing
- AWT (Abstract Window Toolkit)
-
- Prov facilidades para interface de usurio (IU) em Java.
-
- Insuficiente para suportar interfaces de usurio complexas.
- Swing
-
- Conjunto de componentes de UI muito mais completo, flexvel e portvel do que o provido pela AWT.
-
- Conjunto de componentes grficos customizveis cujo look-and-feel (L&F) pode ser ditado em tempo de execuo.
-
- Nosubstitui 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).
3. 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 manipular eventos na GUI
-
-
4. 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 umcontainerde alto nvel como raiz
-
-
- Cadacontainerde alto nvel possui umcontent pane
-
-
- Contm os componentes visveis contidos nocontainer
-
-
- Podem possuir uma barra de menus opcional
-
-
- A barra de menus fica fora docontent pane
-
5. Containers de Alto Nvel 6. Aplicaes Swing
- Containersde Alto Nvel
-
- Hierarquia de componentes
-
-
- Frameprincipal
-
-
-
- Menu bar
-
-
-
- Content pane
-
7. Hierarquia Comum de Containers
-
- JFrame =>top-level container
-
- Content pane e JPanel =>containersintermedirios
-
- JButton e JLabel => componentes
8. Aplicaes Swing
- Containersde Alto Nvel
-
- Adio de componentes aocontent pane
-
-
- Basta obter ocontent panedocontainere ento adicionar o componente
-
-
-
-
- frame.getContentPane().add(label, BorderLayout.CENTER);
-
-
9. Look & Feel
- Escolha do Look & Feel
-
- Usualmente feita no mtodomain
10. 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
-
-
-
11. 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
-
12. Aplicaes Swing
- Exemplos de Componentes
-
- JCheckBox
-
-
- Uso de mnemonic
-
-
-
- Marcar e desmarcar
-
-
-
- Registro de action listener
-
-
-
-
- Modificao de estado
-
-
13. Aplicaes Swing
- Exemplos de Componentes
-
- JRadioButton
-
-
- Uso de mnemonic
-
-
-
- Criao de ButtonGroup
-
-
-
- Registro de action listener
-
-
-
-
- Modificao de opo
-
-
14. Aplicaes Swing
- Exemplos de Componentes
-
- JTabbedPane
-
-
- Adio de abas
-
-
-
- Modificao de aba selecionada
-
15. Aplicaes Swing
- Exemplos de Componentes
-
- JSplitPane
-
-
- Configurao geral e orientao do split
-
-
-
- Posicionamento do divisor
-
-
-
- Restrio de tamanho do divisor
-
-
-
- SplitPane aninhados
-
16. 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
-
17. 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
-
-
18. 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)
-
19. Aplicaes Swing
- Layout Managers
-
- BoxLayout
-
-
- Permite posicionar elementos de forma linear
-
-
-
-
- De cima para baixo
-
-
-
-
-
- Da esquerda para a direita
-
-
20. 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)
-
21. 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)
-
22. 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 classeGridBagConstraints
-