Java 17 Swing

Embed Size (px)

Citation preview

  • 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