Java 17 Swing

3,313
-1

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
3,313
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
175
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java 17 Swing

  1. 1. Interfaces gráficas usando Swing <ul><ul><li>Regis Pires Magalhães </li></ul></ul><ul><ul><li>[email_address] </li></ul></ul>
  2. 2. AWT e Swing <ul><li>AWT (Abstract Window Toolkit) </li></ul><ul><ul><li>Provê facilidades para interface de usuário (IU) em Java. </li></ul></ul><ul><ul><li>Insuficiente para suportar interfaces de usuário complexas. </li></ul></ul><ul><li>Swing </li></ul><ul><ul><li>Conjunto de componentes de UI muito mais completo, flexível e portável do que o provido pela AWT. </li></ul></ul><ul><ul><li>Conjunto de componentes gráficos customizáveis cujo look-and-feel (L&F) pode ser ditado em tempo de execução. </li></ul></ul><ul><ul><li>Não substitui a AWT. </li></ul></ul><ul><ul><li>Construído no topo das classes que compõem o núcleo das bibliotecas AWT. </li></ul></ul><ul><ul><li>Distingue claramente os dados que um componente mostra (modelo) do display dos dados (visão). </li></ul></ul>
  3. 3. Swing <ul><li>O Swing utiliza uma variante simplificada do design MVC denominada model-delegate </li></ul><ul><ul><li>Este projeto combina a visão e o controlador em um único componente => UI delegate </li></ul></ul><ul><ul><li>O MVC no Swing se apresenta como dois componentes </li></ul></ul><ul><ul><ul><li>Modelo </li></ul></ul></ul><ul><ul><ul><ul><li>Mantém informação sobre o estado do componente </li></ul></ul></ul></ul><ul><ul><ul><li>UI delegate </li></ul></ul></ul><ul><ul><ul><ul><li>Responsável desenhar os componentes na tela e manipular eventos na GUI </li></ul></ul></ul></ul>
  4. 4. Containers de Alto Nível <ul><ul><li>Toda aplicação Swing possui pelo menos um container de alto nível </li></ul></ul><ul><ul><ul><li>Usualmente é uma instância de JFrame ou JDialog. </li></ul></ul></ul><ul><ul><ul><li>Provê suporte para que os componentes possam realizar pintura e tratamento de eventos. </li></ul></ul></ul><ul><ul><li>Para ser apresentado na tela, todo componente GUI deve fazer parte de uma hierarquia de conteúdo </li></ul></ul><ul><ul><ul><li>Uma hierarquia possui um container de alto nível como raiz </li></ul></ul></ul><ul><ul><li>Cada container de alto nível possui um content pane </li></ul></ul><ul><ul><ul><li>Contém os componentes visíveis contidos no container </li></ul></ul></ul><ul><ul><li>Podem possuir uma barra de menus opcional </li></ul></ul><ul><ul><ul><li>A barra de menus fica fora do content pane </li></ul></ul></ul>
  5. 5. Containers de Alto Nível
  6. 6. Aplicações Swing <ul><li>Containers de Alto Nível </li></ul><ul><ul><li>Hierarquia de componentes </li></ul></ul><ul><ul><ul><li>Frame principal </li></ul></ul></ul><ul><ul><ul><li>Menu bar </li></ul></ul></ul><ul><ul><ul><li>Content pane </li></ul></ul></ul>
  7. 7. Hierarquia Comum de Containers <ul><ul><li>JFrame => top-level container </li></ul></ul><ul><ul><li>Content pane e JPanel => containers intermediários </li></ul></ul><ul><ul><li>JButton e JLabel => componentes </li></ul></ul>
  8. 8. Aplicações Swing <ul><li>Containers de Alto Nível </li></ul><ul><ul><li>Adição de componentes ao content pane </li></ul></ul><ul><ul><ul><li>Basta obter o content pane do container e então adicionar o componente </li></ul></ul></ul><ul><ul><ul><ul><li>frame.getContentPane().add(label, BorderLayout.CENTER); </li></ul></ul></ul></ul>
  9. 9. Look & Feel <ul><li>Escolha do Look & Feel </li></ul><ul><ul><li>Usualmente feita no método main </li></ul></ul>
  10. 10. Look & Feel <ul><li>Escolha do Look & Feel </li></ul><ul><ul><li>Argumento para UIManager.setLookAndFeel </li></ul></ul><ul><ul><ul><li>UIManager.getCrossPlatformLookAndFeelClassName() </li></ul></ul></ul><ul><ul><ul><ul><li>L&F que funciona em todas as plataformas (Java L&F) </li></ul></ul></ul></ul><ul><ul><ul><li>UIManager.getSystemLookAndFeelClassName() </li></ul></ul></ul><ul><ul><ul><ul><li>L&F para a plataforma em uso </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Plataforma Windows => Windows L&F </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Plataforma Mac OS => Mac OS L&F </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Plataforma Unix (Solaris, Linux, ...) => CDE/Motif L&F </li></ul></ul></ul></ul></ul><ul><ul><ul><li>&quot;com.sun.java.swing.plaf.gtk.GTKLookAndFeel&quot; </li></ul></ul></ul><ul><ul><ul><ul><li>GTK+ L&F => introduzido na release 1.4.2 </li></ul></ul></ul></ul><ul><ul><ul><li>&quot;javax.swing.plaf.metal.MetalLookAndFeel&quot; </li></ul></ul></ul><ul><ul><ul><ul><li>Java L&F => também conhecido como Metal </li></ul></ul></ul></ul><ul><ul><ul><li>&quot;com.sun.java.swing.plaf.windows.WindowsLookAndFeel&quot; </li></ul></ul></ul><ul><ul><ul><ul><li>Windows L&F </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Atualmente só pode ser usado em sistemas Windows </li></ul></ul></ul></ul></ul>
  11. 11. Aplicações Swing <ul><li>Exemplos de Componentes </li></ul><ul><ul><li>JButton </li></ul></ul><ul><ul><ul><li>Criação de botões com ícones </li></ul></ul></ul><ul><ul><ul><ul><li>ImageIcon </li></ul></ul></ul></ul><ul><ul><ul><li>Uso de mnemonic </li></ul></ul></ul><ul><ul><ul><li>Habilitação e desabilitação </li></ul></ul></ul><ul><ul><ul><li>Uso de ações </li></ul></ul></ul><ul><ul><ul><li>Registro de action listener </li></ul></ul></ul><ul><ul><ul><li>Configuração de tooltip </li></ul></ul></ul><ul><ul><ul><li>Texto de botões em HTML </li></ul></ul></ul>
  12. 12. Aplicações Swing <ul><li>Exemplos de Componentes </li></ul><ul><ul><li>JCheckBox </li></ul></ul><ul><ul><ul><li>Uso de mnemonic </li></ul></ul></ul><ul><ul><ul><li>Marcar e desmarcar </li></ul></ul></ul><ul><ul><ul><li>Registro de action listener </li></ul></ul></ul><ul><ul><ul><ul><li>Modificação de estado </li></ul></ul></ul></ul>
  13. 13. Aplicações Swing <ul><li>Exemplos de Componentes </li></ul><ul><ul><li>JRadioButton </li></ul></ul><ul><ul><ul><li>Uso de mnemonic </li></ul></ul></ul><ul><ul><ul><li>Criação de ButtonGroup </li></ul></ul></ul><ul><ul><ul><li>Registro de action listener </li></ul></ul></ul><ul><ul><ul><ul><li>Modificação de opção </li></ul></ul></ul></ul>
  14. 14. Aplicações Swing <ul><li>Exemplos de Componentes </li></ul><ul><ul><li>JTabbedPane </li></ul></ul><ul><ul><ul><li>Adição de abas </li></ul></ul></ul><ul><ul><ul><li>Modificação de aba selecionada </li></ul></ul></ul>
  15. 15. Aplicações Swing <ul><li>Exemplos de Componentes </li></ul><ul><ul><li>JSplitPane </li></ul></ul><ul><ul><ul><li>Configuração geral e orientação do split </li></ul></ul></ul><ul><ul><ul><li>Posicionamento do divisor </li></ul></ul></ul><ul><ul><ul><li>Restrição de tamanho do divisor </li></ul></ul></ul><ul><ul><ul><li>SplitPane aninhados </li></ul></ul></ul>
  16. 16. Aplicações Swing <ul><li>Exemplos de Componentes </li></ul><ul><ul><li>JTable </li></ul></ul><ul><ul><ul><li>Cria uma tabela para apresentar dados tabulares </li></ul></ul></ul><ul><ul><ul><ul><li>Muito utilizado para mostrar tabelas detalhe de tabelas mestre </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Lado N de relacionamento 1:N </li></ul></ul></ul></ul></ul><ul><ul><ul><li>Construtores </li></ul></ul></ul><ul><ul><ul><ul><li>JTable(Object[][] rowData, Object[] columnNames) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>JTable(Vector rowData, Vector columnNames) </li></ul></ul></ul></ul><ul><ul><ul><li>Pode utilizar diversos modelos de dados </li></ul></ul></ul>
  17. 17. Aplicações Swing <ul><li>Exemplos de Componentes </li></ul><ul><ul><li>JTable </li></ul></ul><ul><ul><ul><li>Pode utilizar diversos tipos de renderizadores para os componentes contidos nas células </li></ul></ul></ul><ul><ul><ul><ul><li>Alta flexibilidade para definir a aparência da tabela </li></ul></ul></ul></ul>
  18. 18. Aplicações Swing <ul><li>Layout Managers </li></ul><ul><ul><li>BorderLayout </li></ul></ul><ul><ul><ul><li>Layout default </li></ul></ul></ul><ul><ul><ul><li>Posiciona os componentes em 5 áreas </li></ul></ul></ul><ul><ul><ul><ul><li>Norte, sul, leste, oeste e centro </li></ul></ul></ul></ul><ul><ul><ul><li>BorderLayout(int horizontalGap, int verticalGap) </li></ul></ul></ul><ul><ul><ul><li>setHgap(int) e setVgap(int) </li></ul></ul></ul>
  19. 19. Aplicações Swing <ul><li>Layout Managers </li></ul><ul><ul><li>BoxLayout </li></ul></ul><ul><ul><ul><li>Permite posicionar elementos de forma linear </li></ul></ul></ul><ul><ul><ul><ul><li>De cima para baixo </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Da esquerda para a direita </li></ul></ul></ul></ul>
  20. 20. Aplicações Swing <ul><li>Layout Managers </li></ul><ul><ul><li>FlowLayout </li></ul></ul><ul><ul><ul><li>Permite posicionar elementos linearmente </li></ul></ul></ul><ul><ul><ul><ul><li>Da esquerda para a direita </li></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>Caso não caibam em uma linha, novas linhas são adicionadas automaticamente </li></ul></ul></ul></ul></ul><ul><ul><ul><li>public FlowLayout() </li></ul></ul></ul><ul><ul><ul><li>public FlowLayout(int alignment) </li></ul></ul></ul><ul><ul><ul><li>public FlowLayout(int alignment, int horizontalGap, int verticalGap) </li></ul></ul></ul>
  21. 21. Aplicações Swing <ul><li>Layout Managers </li></ul><ul><ul><li>GridLayout </li></ul></ul><ul><ul><ul><li>Dispõe os componentes em um grid de linhas e colunas </li></ul></ul></ul><ul><ul><ul><li>Cada componente ocupa o espaço exato de uma célula </li></ul></ul></ul><ul><ul><ul><li>public GridLayout(int rows, int columns) </li></ul></ul></ul><ul><ul><ul><li>public GridLayout(int rows, int columns, int horizontalGap, int verticalGap) </li></ul></ul></ul>
  22. 22. Aplicações Swing <ul><li>Layout Managers </li></ul><ul><ul><li>GridBagLayout </li></ul></ul><ul><ul><ul><li>Layout mais flexível e mais complexo do Swing </li></ul></ul></ul><ul><ul><ul><li>Dispõe os componentes em um grid de linhas e colunas </li></ul></ul></ul><ul><ul><ul><ul><li>Componentes podem se estender a várias linhas ou colunas </li></ul></ul></ul></ul><ul><ul><ul><li>Configurações são passadas para o layout através de uma instância da classe GridBagConstraints </li></ul></ul></ul>

×