SlideShare uma empresa Scribd logo
Noções de Design Gráfico


Unidade IV – Estudo aplicado em
    ambientes heterogêneos



                          Prof. Nécio de Lima Veras
           http://lattes.cnpq.br/8284657916723590
Objetivo

   Realizar estudo prático de produção de
interfaces em ambientes heterogêneos (web,
  desktop e móvel) usando ferramentas de
                   autoria.




                               Prof. Nécio de Lima Veras
                http://lattes.cnpq.br/8284657916723590

        Página da disciplina na Web
Interfaces gráficas usando Swing


  Adaptado por: Nécio de Lima Veras
       necio.veras@ifce.edu.br
    Objetivo: revisar os comandos da API Swing

   Créditos: Regis Pires Magalhães – regis@ifpi.edu.br


                                               Prof. Nécio Veras
Leitura recomendada




http://java.sun.com/docs/books/tutorial/ui/feature
                 s/compWin.html




                                    Prof. Nécio Veras
Parte I – Fundamentos do Swing




                       Prof. Nécio Veras
Interfaces gráficas em
                          Java
●   As bibliotecas gráficas oficiais incluídas no
    Java são: AWT e Swing;
●   Outra biblioteca muito usada é o SWT,
    desenvolvida pela IBM e usada no IDE
    Eclipse;
●   A complexidade do Swing deve-se ao máximo
    de portabilidade de busca atingir;
●   A aplicação se comporta da mesma forma,
    independente do sistema operacional em uso;

                                          Prof. Nécio Veras
AWT e Swing

●   AWT (Abstract Window Toolkit)
    –   Provê facilidades para interface de usuário (IU) em Java.
    –   Insuficiente para suportar interfaces de usuário complexas.
●   Swing
    –   Conjunto de componentes de UI muito mais completo, flexível e
        portável do que o provido pela AWT.
    –   Conjunto de componentes gráficos customizáveis cuja aparência
        (look-and-feel - L&F) pode ser alterada em tempo de execução.
    –   Não substitui a AWT.
    –   Construído no topo das classes que compõem o núcleo das
        bibliotecas AWT.



                                                             Prof. Nécio Veras
Exemplo

import javax.swing.JOptionPane;

public class FSimples {

    public static void main(String[] args) {
      JOptionPane.showMessageDialog(null, "Oi");
    }

}




                                    Prof. Nécio Veras
Aparência - Look & Feel

●   Identificando a aparência usada...

    import javax.swing.JOptionPane;
    import javax.swing.UIManager;

    public class FSimples {

        public static void main(String[] args) {
          JOptionPane.showMessageDialog(null, UIManager.getLookAndFeel());
        }

    }




                                                         Prof. Nécio Veras
Aparência - Look & Feel

●   Mudando a aparência...
     import javax.swing.JOptionPane;
     import javax.swing.UIManager;

     public class FSimples {

         public static void main(String[] args) {
           JOptionPane.showMessageDialog(null,
               "Aparência Padrão: " + UIManager.getLookAndFeel());

             try {

     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
         } catch (Exception e) {
           e.printStackTrace();
         }

             JOptionPane.showMessageDialog(null,
                 "Aparência do Sistema: " + UIManager.getLookAndFeel());
         }

     }                                                       Prof. Nécio Veras
Aparência - Look & Feel

●   Algumas aparências possíveis:
    –   UIManager.getCrossPlatformLookAndFeelClassName()
        ●   Funciona em todas as plataformas (Java L&F)
        ●   Java Look and Feel
             –   “javax.swing.plaf.metal.MetalLookAndFeel”
    –   UIManager.getSystemLookAndFeelClassName()
        ●   Aparência para a plataforma em uso
        ●   No Linux: GTK look and feel
             –   “com.sun.java.swing.plaf.gtk.GTKLookAndFeel”
        ●   No Windows: Windows look and feel
             –   "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
    –   Outras aparências podem ser instaladas.


                                                                        Prof. Nécio Veras
Componentes AWT

●   Component
●   Container
●   Panel
●   Window
●   Dialog
●   Frame
●   Graphics
●   Outros:
                           Prof. Nécio Veras
Exemplo

import java.awt.*;

public class FrameDemo {
  public static void main(String args[]) {
    Frame f = new Frame();
    f.setSize(100, 100);
    f.setVisible(true);
  }
}




                               Prof. Nécio Veras
Exemplo
import java.awt.*;

public class PanelDemo extends Panel {
  public PanelDemo() {
    this.setBackground(Color.black);
  }

    public void paint(Graphics g) {
      g.setColor(new Color(0, 255, 0)); // verde
      g.setFont(new Font("Helvetica", Font.PLAIN, 16));
      g.drawString("Hello GUI World!", 30, 100);
      g.setColor(new Color(1.0f, 0, 0)); // vermelho
      g.fillRect(30, 100, 150, 10);
    }

    public static void main(String args[]) {
      Frame f = new Frame("Testing Graphics Panel");
      PanelDemo painel = new PanelDemo();
      f.add(painel);
      f.setSize(600, 300);
      f.setVisible(true);
    }
}

                                                          Prof. Nécio Veras
Exemplo
import java.awt.*;
import javax.swing.*;

public class JDesenho extends JPanel{
    protected void paintComponent(Graphics g) {
        g.setColor(Color.white);
        g.fillRect(0, 0, 500, 500);
        g.setColor(Color.darkGray);
        g.fillOval(150, 200, 200, 40);
        g.setColor(Color.red);
        g.fillOval(100, 80, 150, 150);
        g.setColor(Color.pink);
        g.fillOval(120, 105, 30, 30);
        g.setColor(Color.blue);
        g.setFont(new Font("Arial Bold", Font.PLAIN,
36));
        g.drawString("Java Swing", 30, 50);
    }

    public static void main(String args[]) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new JDesenho());
        f.setSize(400, 300);
        f.setVisible(true);
    }
}
                                                            Prof. Nécio Veras
Componentes Swing

●   Containers de alto nível (top-level):
    –   JFrame
    –   JApplet
    –   JDialog




                                            Prof. Nécio Veras
Componentes Swing
●
    JComponent
    –   Classe raiz para todos os componentes Swing, excluindo containers de
        alto-nível.
●
    JTextField
    –   Permite a edição de uma única linha de texto.
●
    JOptionPane
    –   Fornece uma maneira fácil de exibir caixas de diálogo pop-up.
●   JFileChooser
    –   Permite ao usuário que selecione um arquivo.
●   JColorChooser
    –   Permite ao usuário selecionar uma cor.



                                                                Prof. Nécio Veras
Componentes Swing
●   Botão – JButton
    –   Criação de botões com ícones
         ●   ImageIcon
    –   Uso de mnemonic
    –   Habilitação e desabilitação
    –   Uso de ações
    –   Registro de action listener
    –   Configuração de tooltip
    –   Texto de botões em HTML




                                        Prof. Nécio Veras
Componentes Swing

●   Caixa de Seleção - JCheckBox
    –   Uso de mnemonic
    –   Marcar e desmarcar
    –   Registro de action listener
        ●   Modificação de estado




                                      Prof. Nécio Veras
Componentes Swing

●   Botão de Opção - JRadioButton
    –   Uso de mnemonic
    –   Usado em conjunto com Grupo de Botões –
        ButtonGroup – para que apenas um item possa
        ser selecionado.
    –   Registro de action listener
        ●   Modificação de opção




                                            Prof. Nécio Veras
Componentes Swing

●   Painel com Abas - JTabbedPane
    –   Adição de abas / guias
    –   Modificação de aba selecionada




                                         Prof. Nécio Veras
Componentes Swing

●   Divisão de Painel - JSplitPane
    –   Usado para dividir dois componentes que podem ser
        redimensionados interativamente pelo usuário.
    –   Configuração geral e orientação do split
    –   Posicionamento do divisor
    –   Restrição de tamanho
        do divisor
    –   SplitPane aninhados



                                                   Prof. Nécio Veras
Componentes Swing

●   Tabela - JTable
    –   Cria uma tabela para apresentar dados tabulares
        ●   Muito utilizado para mostrar tabelas detalhe de tabelas
            mestre
             –   Lado N de relacionamento 1:N
    –   Pode utilizar diversos modelos de dados




                                                      Prof. Nécio Veras
Componentes Swing

●   Tabela - JTable
    –   Alta flexibilidade para definir a aparência da tabela




                                                Prof. Nécio Veras
Exemplo
import java.awt.FlowLayout;
import javax.swing.*;

public class FTeste {

    public static void main(String[] args) {
      JFrame janela = new JFrame("Simples");
      janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      janela.setLayout(new FlowLayout());

        JLabel rotulo = new JLabel();
        rotulo.setText("Java Swing");
        janela.add(rotulo);

        JButton botao = new JButton();
        botao.setText("Botão Inútil");
        janela.add(botao);

        janela.pack();
        janela.setVisible(true);
    }

}                                                Prof. Nécio Veras
Experiências e Exercícios

●   O que acontece de diferente se as linhas a seguir
    não estiverem no código?
    ●   janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ●   janela.setLayout(new FlowLayout());
    ●   janela.pack();

●   Para que elas servem?


●   Exercício:
        –   Faça um formulário de cadastro qualquer usando
            componentes básicos vistos anteriormente, tais como:
            jLabel, jButton, jTextField, jCheckBox, jRadioButton e
            jTable, por exemplo.                       Prof. Nécio Veras
Parte II – Trabalhando com controle
   de Layouts e tratamentos de
               Eventos




                            Prof. Nécio de Lima Veras
             http://lattes.cnpq.br/8284657916723590
Gerenciadores de Layout –
                Layout Managers
●   Determinam a disposição e o tamanho dos
    componentes no contêiner.




                                     Prof. Nécio Veras
Gerenciadores de Layout –
                      Layout Managers
●   BorderLayout
    –   Layout default para objetos Window e suas
        subclasses.
    –   Posiciona os componentes em 5 áreas
        ●   Norte, sul, leste, oeste e centro




                                                Prof. Nécio Veras
Exemplo

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class BorderLayoutDemo {
   public static void main(String args[]) {
      JFrame frm = new JFrame();
      frm.setLayout(new BorderLayout(10, 10));
      frm.add(new JButton("NORTH"), BorderLayout.NORTH);
      frm.add(new JButton("SOUTH"), BorderLayout.SOUTH);
      frm.add(new JButton("EAST"), BorderLayout.EAST);
      frm.add(new JButton("WEST"), BorderLayout.WEST);
      frm.add(new JButton("CENTER"), BorderLayout.CENTER);
      frm.setSize(200, 200);
      frm.setVisible(true);
   }
}

                                                     Prof. Nécio Veras
Gerenciadores de Layout –
                   Layout Managers
●   FlowLayout
    –   Gerenciador padrão para Panel e suas
        subclasses.
    –   Posiciona os componentes da esquerda para a
        direita e de cima para baixo, começando no canto
        superior esquerdo.




                                               Prof. Nécio Veras
Exemplo


import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class FlowLayoutDemo {
  public static void main(String args[]) {
    JFrame frm = new JFrame();
    frm.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10));
    frm.add(new JButton("ONE"));
    frm.add(new JButton("TWO"));
    frm.add(new JButton("THREE"));
    frm.setSize(180, 120);
    frm.setVisible(true);
  }
}


                                                    Prof. Nécio Veras
Gerenciadores de Layout –
                      Layout Managers
●   BoxLayout
    –   Permite posicionar elementos de forma linear
        ●   De cima para baixo
        ●   Da esquerda para a direita




                                             Prof. Nécio Veras
Gerenciadores de Layout –
                   Layout Managers
●   GridLayout
    –   Dispõe os componentes em um grid de linhas e
        colunas.
    –   Cada componente ocupa o espaço exato de uma
        célula.
    –   Posiciona os componentes da esquerda para a
        direita e de cima para baixo.




                                           Prof. Nécio Veras
Exemplo

import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class GridLayoutDemo {
  public static void main(String args[]) {
    JFrame frm = new JFrame();
    frm.setLayout(new GridLayout(2, 3, 4, 4));
    frm.add(new JButton("ONE"));
    frm.add(new JButton("TWO"));
    frm.add(new JButton("THREE"));
    frm.add(new JButton("FOUR"));
    frm.add(new JButton("FIVE"));
    frm.setSize(200, 200);
    frm.setVisible(true);
  }
}
                                           Prof. Nécio Veras
Gerenciadores de Layout –
                     Layout Managers
●   GridBagLayout
    –   Layout mais flexível e mais complexo do Swing
    –   Dispõe os componentes em um grid de linhas e
        colunas
        ●   Componentes podem se estender a várias linhas ou
            colunas




                                                  Prof. Nécio Veras
Gerenciadores de Layout –
                      Layout Managers
●   GroupLayout
    –   Nativo no Swing a partir do Java 6.
    –   Agrupa componentes hierarquicamente para
        posicioná-los em um contêiner.
    –   Foi projetado especialmente para uso em
        construtores de tela, mas pode ser codificado
        manualmente.
    –   Suporta 2 tipos de agrupamentos:
        ●   Sequencial – elementos são posicionados
            sequencialmente, um após o outro.
        ●   Paralelo – Alinha os elementos em 1 de 4 maneiras
            possíveis.                               Prof. Nécio Veras
Gerenciadores de Layout –
                          Layout Managers
●   O GroupLayout permite:
    –   Alinhar componentes horizontal e verticalmente;
    –   Inserir componentes inteligentemente;
    –   Alinhar a margem dos componentes;
    –   Esticar os componentes para esquerda, direita ou ambos;
    –   Esticar os componentes para o alto, baixo ou ambos;
    –   Definir o alinhamento, tamanho e espaçamento.




                                                                  Prof. Nécio Veras
Eventos




          Prof. Nécio Veras
Eventos
●   Implementação de manipuladores de eventos
    –   Declaração de classe que implementa a interface para
        tratamento de eventos do tipo requerido.
    –   Código que implementa os métodos definidos na interface
        listener.
    –   Registro de instâncias de classe manipuladoras de eventos
        como ouvintes para o evento do componente desejado.
         ●   Adição de ouvintes através de métodos como:
              –   addActionListener
              –   addWindowListener




                                                           Prof. Nécio Veras
Eventos

●   Exemplos de Ouvintes usados no Swing:
    –   ActionListener
        ●   Cliques em botões, Enter em campos, cliques em
            menus
    –   WindowListener
        ●   Manipulação de frames
    –   MouseListener e MouseMotionListener
        ●   Pressionamento de botão do mouse sobre
            componentes
        ●   Movimentação do mouse sobre componentes

                                                   Prof. Nécio Veras
Implementando Ouvinte



import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;

public class MeuOuvinte implements ActionListener {
  public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(null, "Ação!!!");
  }
}




                                          Prof. Nécio Veras
Registrando um Ouvinte
import java.awt.FlowLayout;
import javax.swing.*;

public class FTeste {
  public static void main(String[] args) {
    JFrame janela = new JFrame("Simples");
    janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    janela.setLayout(new FlowLayout());

        JLabel rotulo = new JLabel();
        rotulo.setText("Java Swing");
        janela.add(rotulo);

        JButton botao = new JButton();
        botao.setText("Botão Útil");
        botao.addActionListener(new MeuOuvinte());
        janela.add(botao);
        janela.pack();
        janela.setVisible(true);
    }
}




                                                Prof. Nécio Veras
Registrando e Implementando
           Ouvinte através de uma classe
                  interna estática
import java.awt.FlowLayout;
import java.awt.event.*;
import javax.swing.*;

public class FTeste {
  public static void main(String[] args) {
    final JFrame janela = new JFrame("Simples");
    janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    janela.setLayout(new FlowLayout());

        JLabel rotulo = new JLabel();
        rotulo.setText("Java Swing");
        janela.add(rotulo);

        JButton botao = new JButton();
        botao.setText("Botão Útil");


        botao.addActionListener(new MeuOuvinte());
        janela.add(botao);

        janela.pack();
        janela.setVisible(true);
    }

    public static class MeuOuvinte implements ActionListener {
        public void actionPerformed(ActionEvent e) {
          JOptionPane.showMessageDialog(null, "Ação!!!");
        }
    }
}
                                                                 Prof. Nécio Veras
Registrando e Implementando
              Ouvinte através de uma classe
                     interna anônima
import     java.awt.FlowLayout;
import     java.awt.event.ActionEvent;
import     java.awt.event.ActionListener;
import     javax.swing.*;

public class FTeste {
  public static void main(String[] args) {
    final JFrame janela = new JFrame("Simples");
    janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    janela.setLayout(new FlowLayout());

        JLabel rotulo = new JLabel();
        rotulo.setText("Java Swing");
        janela.add(rotulo);

        JButton botao = new JButton();
        botao.setText("Botão Útil");

        botao.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(janela, "Ação!!!");
          }
        });
        janela.add(botao);

        janela.pack();
        janela.setVisible(true);
    }
}
                                                                Prof. Nécio Veras
Exercício
● Construa uma calculadora simples baseada na interface gráfica abaixo.
● Os resultados devem estar desabilitados.


● Deve haver teclas de atalho para acessar as caixas de texto e os botões.


● Deve haver dicas para explicar as caixas de texto e botões.


●
    Os números só devem ser aceitos se forem válidos.




●   Dica:
    – Botão padrão:
      ●   this.getRootPane().setDefaultButton(jButtonCalcula);
                                                                  Prof. Nécio Veras

Mais conteúdo relacionado

Mais procurados

Sistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de ConteúdoSistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de Conteúdo
Tiago Celestino
 
Java www
Java wwwJava www
Aprender HTML (UFCD0152 e UFCD0153) v2
Aprender HTML (UFCD0152 e UFCD0153) v2Aprender HTML (UFCD0152 e UFCD0153) v2
Aprender HTML (UFCD0152 e UFCD0153) v2
Afonso Gomes
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
Denis L Presciliano
 
Tipos de predicados
Tipos de predicadosTipos de predicados
Tipos de predicados
Dany Pimentel
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
Nécio de Lima Veras
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
Yuri Garcia
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
Armando Daniel
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
antonio sérgio nogueira
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
Léo Dias
 
Construção de interfaces gráficas com Tkinter
Construção de interfaces gráficas com TkinterConstrução de interfaces gráficas com Tkinter
Construção de interfaces gráficas com Tkinter
Marcos Castro
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
Ludimila Monjardim Casagrande
 
React Native - JSday
React Native - JSdayReact Native - JSday
React Native - JSday
Eric Cavalcanti
 
Frases complexas
Frases complexasFrases complexas
Frases complexas
Universidade Pedagogica
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra Relacional
Rodrigo Kiyoshi Saito
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
Ludimila Monjardim Casagrande
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
Gustavo Lopes
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
Alberto Simões
 
Introdução a HTML5
Introdução a HTML5Introdução a HTML5
Introdução a HTML5
Salvador Torres
 

Mais procurados (20)

Sistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de ConteúdoSistemas de Gerenciamento de Conteúdo
Sistemas de Gerenciamento de Conteúdo
 
Java www
Java wwwJava www
Java www
 
Aprender HTML (UFCD0152 e UFCD0153) v2
Aprender HTML (UFCD0152 e UFCD0153) v2Aprender HTML (UFCD0152 e UFCD0153) v2
Aprender HTML (UFCD0152 e UFCD0153) v2
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Tipos de predicados
Tipos de predicadosTipos de predicados
Tipos de predicados
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Acessando o MySql com o Python
Acessando o MySql com o PythonAcessando o MySql com o Python
Acessando o MySql com o Python
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Construção de interfaces gráficas com Tkinter
Construção de interfaces gráficas com TkinterConstrução de interfaces gráficas com Tkinter
Construção de interfaces gráficas com Tkinter
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
React Native - JSday
React Native - JSdayReact Native - JSday
React Native - JSday
 
Frases complexas
Frases complexasFrases complexas
Frases complexas
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra Relacional
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
Introdução a HTML5
Introdução a HTML5Introdução a HTML5
Introdução a HTML5
 

Destaque

Apostila programação visual usando java e netbeans
Apostila programação visual usando java e netbeansApostila programação visual usando java e netbeans
Apostila programação visual usando java e netbeans
George Dantas
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a Objetos
João Longo
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhos
andreandrade17
 
Tutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swingTutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swing
Everson Wolf
 
Prática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIPrática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação II
Everson Wolf
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
Mayron Cachina
 
Apostila: Netbeans
Apostila: NetbeansApostila: Netbeans
Apostila: Netbeans
Verônica Veiga
 
Samir Mamude - Sistemas Comerciais Java EE
Samir Mamude - Sistemas Comerciais Java EESamir Mamude - Sistemas Comerciais Java EE
Samir Mamude - Sistemas Comerciais Java EE
Samir Mamude
 
Criando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansCriando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeans
Serge Rehem
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Lorran Pegoretti
 

Destaque (10)

Apostila programação visual usando java e netbeans
Apostila programação visual usando java e netbeansApostila programação visual usando java e netbeans
Apostila programação visual usando java e netbeans
 
Java, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a ObjetosJava, NetBeans e Orientação a Objetos
Java, NetBeans e Orientação a Objetos
 
Net beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e AtalhosNet beans 7.4 Funções e Atalhos
Net beans 7.4 Funções e Atalhos
 
Tutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swingTutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swing
 
Prática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação IIPrática de ensino de Linguagem de Programação II
Prática de ensino de Linguagem de Programação II
 
Orientação a Objetos - Conceitos
Orientação a Objetos - ConceitosOrientação a Objetos - Conceitos
Orientação a Objetos - Conceitos
 
Apostila: Netbeans
Apostila: NetbeansApostila: Netbeans
Apostila: Netbeans
 
Samir Mamude - Sistemas Comerciais Java EE
Samir Mamude - Sistemas Comerciais Java EESamir Mamude - Sistemas Comerciais Java EE
Samir Mamude - Sistemas Comerciais Java EE
 
Criando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeansCriando uma Agenda simples com NetBeans
Criando uma Agenda simples com NetBeans
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 

Semelhante a Java swing

Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
Delliany Miranda
 
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdfAula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
anapatricio
 
Java 17 Swing
Java 17 SwingJava 17 Swing
Java 17 Swing
Regis Magalhães
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
Verônica Veiga
 
JSF & REST
JSF & RESTJSF & REST
JSF & REST
Eduardo Bregaida
 
JavaFx - Introdução
JavaFx - IntroduçãoJavaFx - Introdução
JavaFx - Introdução
LuisGustavoAraujo3
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
jesuinoPower
 
Java Swing
Java SwingJava Swing
Java Swing
Daniel Arndt Alves
 
GUI Aplicações Gráficas
GUI Aplicações Gráficas GUI Aplicações Gráficas
GUI Aplicações Gráficas
Mario Jorge Pereira
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
Secretaria de Educação de Goiás
 
Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1
Pedro Neto
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
a41172
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
Luís Cobucci
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
jesuinoPower
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java Platform
Michel Alves
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
Ialis Cavalcante
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
Arthur Emanuel
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
jesuinoPower
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
Armando Daniel
 
Java gui
Java guiJava gui
Java gui
Deywson Johnny
 

Semelhante a Java swing (20)

Java swingcomponentes
Java swingcomponentesJava swingcomponentes
Java swingcomponentes
 
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdfAula 1 - Introdução à Interface gráfica do JAVA.pdf
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
 
Java 17 Swing
Java 17 SwingJava 17 Swing
Java 17 Swing
 
Apostila:Curso de java II
Apostila:Curso de java II  Apostila:Curso de java II
Apostila:Curso de java II
 
JSF & REST
JSF & RESTJSF & REST
JSF & REST
 
JavaFx - Introdução
JavaFx - IntroduçãoJavaFx - Introdução
JavaFx - Introdução
 
JavaFX 2
JavaFX 2JavaFX 2
JavaFX 2
 
Java Swing
Java SwingJava Swing
Java Swing
 
GUI Aplicações Gráficas
GUI Aplicações Gráficas GUI Aplicações Gráficas
GUI Aplicações Gráficas
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1Capitulo 14 -_componentes_gui_parte_1
Capitulo 14 -_componentes_gui_parte_1
 
Java - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissionalJava - Gestão de componentes curso profissional
Java - Gestão de componentes curso profissional
 
jQuery básico (parte 3)
jQuery básico (parte 3)jQuery básico (parte 3)
jQuery básico (parte 3)
 
JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012JavaFX 2 - TDC 2012
JavaFX 2 - TDC 2012
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java Platform
 
Interface grafica
Interface graficaInterface grafica
Interface grafica
 
Java: Introducao ao Swing
Java: Introducao ao SwingJava: Introducao ao Swing
Java: Introducao ao Swing
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Java gui
Java guiJava gui
Java gui
 

Mais de Nécio de Lima Veras

Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
Nécio de Lima Veras
 
Teste de software
Teste de softwareTeste de software
Teste de software
Nécio de Lima Veras
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
Nécio de Lima Veras
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Nécio de Lima Veras
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Nécio de Lima Veras
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
Nécio de Lima Veras
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
Nécio de Lima Veras
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
Nécio de Lima Veras
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
Nécio de Lima Veras
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
Nécio de Lima Veras
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
Nécio de Lima Veras
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
Nécio de Lima Veras
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
Nécio de Lima Veras
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
Nécio de Lima Veras
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
Nécio de Lima Veras
 
Relacionamentos do mapeamento OR
Relacionamentos do mapeamento ORRelacionamentos do mapeamento OR
Relacionamentos do mapeamento OR
Nécio de Lima Veras
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
Nécio de Lima Veras
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
Nécio de Lima Veras
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionais
Nécio de Lima Veras
 
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Nécio de Lima Veras
 

Mais de Nécio de Lima Veras (20)

Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Relacionamentos do mapeamento OR
Relacionamentos do mapeamento ORRelacionamentos do mapeamento OR
Relacionamentos do mapeamento OR
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Introdução aos Sistemas operacionais
Introdução aos Sistemas operacionaisIntrodução aos Sistemas operacionais
Introdução aos Sistemas operacionais
 
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
Organizando um Repositório de Objetos de Aprendizagem para dispositivos móvei...
 

Java swing

  • 1. Noções de Design Gráfico Unidade IV – Estudo aplicado em ambientes heterogêneos Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  • 2. Objetivo Realizar estudo prático de produção de interfaces em ambientes heterogêneos (web, desktop e móvel) usando ferramentas de autoria. Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590 Página da disciplina na Web
  • 3. Interfaces gráficas usando Swing Adaptado por: Nécio de Lima Veras necio.veras@ifce.edu.br Objetivo: revisar os comandos da API Swing Créditos: Regis Pires Magalhães – regis@ifpi.edu.br Prof. Nécio Veras
  • 5. Parte I – Fundamentos do Swing Prof. Nécio Veras
  • 6. Interfaces gráficas em Java ● As bibliotecas gráficas oficiais incluídas no Java são: AWT e Swing; ● Outra biblioteca muito usada é o SWT, desenvolvida pela IBM e usada no IDE Eclipse; ● A complexidade do Swing deve-se ao máximo de portabilidade de busca atingir; ● A aplicação se comporta da mesma forma, independente do sistema operacional em uso; Prof. Nécio Veras
  • 7. AWT e Swing ● AWT (Abstract Window Toolkit) – Provê facilidades para interface de usuário (IU) em Java. – Insuficiente para suportar interfaces de usuário complexas. ● Swing – Conjunto de componentes de UI muito mais completo, flexível e portável do que o provido pela AWT. – Conjunto de componentes gráficos customizáveis cuja aparência (look-and-feel - L&F) pode ser alterada em tempo de execução. – Não substitui a AWT. – Construído no topo das classes que compõem o núcleo das bibliotecas AWT. Prof. Nécio Veras
  • 8. Exemplo import javax.swing.JOptionPane; public class FSimples { public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Oi"); } } Prof. Nécio Veras
  • 9. Aparência - Look & Feel ● Identificando a aparência usada... import javax.swing.JOptionPane; import javax.swing.UIManager; public class FSimples { public static void main(String[] args) { JOptionPane.showMessageDialog(null, UIManager.getLookAndFeel()); } } Prof. Nécio Veras
  • 10. Aparência - Look & Feel ● Mudando a aparência... import javax.swing.JOptionPane; import javax.swing.UIManager; public class FSimples { public static void main(String[] args) { JOptionPane.showMessageDialog(null, "Aparência Padrão: " + UIManager.getLookAndFeel()); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } JOptionPane.showMessageDialog(null, "Aparência do Sistema: " + UIManager.getLookAndFeel()); } } Prof. Nécio Veras
  • 11. Aparência - Look & Feel ● Algumas aparências possíveis: – UIManager.getCrossPlatformLookAndFeelClassName() ● Funciona em todas as plataformas (Java L&F) ● Java Look and Feel – “javax.swing.plaf.metal.MetalLookAndFeel” – UIManager.getSystemLookAndFeelClassName() ● Aparência para a plataforma em uso ● No Linux: GTK look and feel – “com.sun.java.swing.plaf.gtk.GTKLookAndFeel” ● No Windows: Windows look and feel – "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" – Outras aparências podem ser instaladas. Prof. Nécio Veras
  • 12. Componentes AWT ● Component ● Container ● Panel ● Window ● Dialog ● Frame ● Graphics ● Outros: Prof. Nécio Veras
  • 13. Exemplo import java.awt.*; public class FrameDemo { public static void main(String args[]) { Frame f = new Frame(); f.setSize(100, 100); f.setVisible(true); } } Prof. Nécio Veras
  • 14. Exemplo import java.awt.*; public class PanelDemo extends Panel { public PanelDemo() { this.setBackground(Color.black); } public void paint(Graphics g) { g.setColor(new Color(0, 255, 0)); // verde g.setFont(new Font("Helvetica", Font.PLAIN, 16)); g.drawString("Hello GUI World!", 30, 100); g.setColor(new Color(1.0f, 0, 0)); // vermelho g.fillRect(30, 100, 150, 10); } public static void main(String args[]) { Frame f = new Frame("Testing Graphics Panel"); PanelDemo painel = new PanelDemo(); f.add(painel); f.setSize(600, 300); f.setVisible(true); } } Prof. Nécio Veras
  • 15. Exemplo import java.awt.*; import javax.swing.*; public class JDesenho extends JPanel{ protected void paintComponent(Graphics g) { g.setColor(Color.white); g.fillRect(0, 0, 500, 500); g.setColor(Color.darkGray); g.fillOval(150, 200, 200, 40); g.setColor(Color.red); g.fillOval(100, 80, 150, 150); g.setColor(Color.pink); g.fillOval(120, 105, 30, 30); g.setColor(Color.blue); g.setFont(new Font("Arial Bold", Font.PLAIN, 36)); g.drawString("Java Swing", 30, 50); } public static void main(String args[]) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new JDesenho()); f.setSize(400, 300); f.setVisible(true); } } Prof. Nécio Veras
  • 16. Componentes Swing ● Containers de alto nível (top-level): – JFrame – JApplet – JDialog Prof. Nécio Veras
  • 17. Componentes Swing ● JComponent – Classe raiz para todos os componentes Swing, excluindo containers de alto-nível. ● JTextField – Permite a edição de uma única linha de texto. ● JOptionPane – Fornece uma maneira fácil de exibir caixas de diálogo pop-up. ● JFileChooser – Permite ao usuário que selecione um arquivo. ● JColorChooser – Permite ao usuário selecionar uma cor. Prof. Nécio Veras
  • 18. Componentes Swing ● Botão – JButton – Criação de botões com ícones ● ImageIcon – Uso de mnemonic – Habilitação e desabilitação – Uso de ações – Registro de action listener – Configuração de tooltip – Texto de botões em HTML Prof. Nécio Veras
  • 19. Componentes Swing ● Caixa de Seleção - JCheckBox – Uso de mnemonic – Marcar e desmarcar – Registro de action listener ● Modificação de estado Prof. Nécio Veras
  • 20. Componentes Swing ● Botão de Opção - JRadioButton – Uso de mnemonic – Usado em conjunto com Grupo de Botões – ButtonGroup – para que apenas um item possa ser selecionado. – Registro de action listener ● Modificação de opção Prof. Nécio Veras
  • 21. Componentes Swing ● Painel com Abas - JTabbedPane – Adição de abas / guias – Modificação de aba selecionada Prof. Nécio Veras
  • 22. Componentes Swing ● Divisão de Painel - JSplitPane – Usado para dividir dois componentes que podem ser redimensionados interativamente pelo usuário. – Configuração geral e orientação do split – Posicionamento do divisor – Restrição de tamanho do divisor – SplitPane aninhados Prof. Nécio Veras
  • 23. Componentes Swing ● Tabela - JTable – Cria uma tabela para apresentar dados tabulares ● Muito utilizado para mostrar tabelas detalhe de tabelas mestre – Lado N de relacionamento 1:N – Pode utilizar diversos modelos de dados Prof. Nécio Veras
  • 24. Componentes Swing ● Tabela - JTable – Alta flexibilidade para definir a aparência da tabela Prof. Nécio Veras
  • 25. Exemplo import java.awt.FlowLayout; import javax.swing.*; public class FTeste { public static void main(String[] args) { JFrame janela = new JFrame("Simples"); janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); janela.setLayout(new FlowLayout()); JLabel rotulo = new JLabel(); rotulo.setText("Java Swing"); janela.add(rotulo); JButton botao = new JButton(); botao.setText("Botão Inútil"); janela.add(botao); janela.pack(); janela.setVisible(true); } } Prof. Nécio Veras
  • 26. Experiências e Exercícios ● O que acontece de diferente se as linhas a seguir não estiverem no código? ● janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ● janela.setLayout(new FlowLayout()); ● janela.pack(); ● Para que elas servem? ● Exercício: – Faça um formulário de cadastro qualquer usando componentes básicos vistos anteriormente, tais como: jLabel, jButton, jTextField, jCheckBox, jRadioButton e jTable, por exemplo. Prof. Nécio Veras
  • 27. Parte II – Trabalhando com controle de Layouts e tratamentos de Eventos Prof. Nécio de Lima Veras http://lattes.cnpq.br/8284657916723590
  • 28. Gerenciadores de Layout – Layout Managers ● Determinam a disposição e o tamanho dos componentes no contêiner. Prof. Nécio Veras
  • 29. Gerenciadores de Layout – Layout Managers ● BorderLayout – Layout default para objetos Window e suas subclasses. – Posiciona os componentes em 5 áreas ● Norte, sul, leste, oeste e centro Prof. Nécio Veras
  • 30. Exemplo import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; public class BorderLayoutDemo { public static void main(String args[]) { JFrame frm = new JFrame(); frm.setLayout(new BorderLayout(10, 10)); frm.add(new JButton("NORTH"), BorderLayout.NORTH); frm.add(new JButton("SOUTH"), BorderLayout.SOUTH); frm.add(new JButton("EAST"), BorderLayout.EAST); frm.add(new JButton("WEST"), BorderLayout.WEST); frm.add(new JButton("CENTER"), BorderLayout.CENTER); frm.setSize(200, 200); frm.setVisible(true); } } Prof. Nécio Veras
  • 31. Gerenciadores de Layout – Layout Managers ● FlowLayout – Gerenciador padrão para Panel e suas subclasses. – Posiciona os componentes da esquerda para a direita e de cima para baixo, começando no canto superior esquerdo. Prof. Nécio Veras
  • 32. Exemplo import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class FlowLayoutDemo { public static void main(String args[]) { JFrame frm = new JFrame(); frm.setLayout(new FlowLayout(FlowLayout.RIGHT, 10, 10)); frm.add(new JButton("ONE")); frm.add(new JButton("TWO")); frm.add(new JButton("THREE")); frm.setSize(180, 120); frm.setVisible(true); } } Prof. Nécio Veras
  • 33. Gerenciadores de Layout – Layout Managers ● BoxLayout – Permite posicionar elementos de forma linear ● De cima para baixo ● Da esquerda para a direita Prof. Nécio Veras
  • 34. Gerenciadores de Layout – Layout Managers ● GridLayout – Dispõe os componentes em um grid de linhas e colunas. – Cada componente ocupa o espaço exato de uma célula. – Posiciona os componentes da esquerda para a direita e de cima para baixo. Prof. Nécio Veras
  • 35. Exemplo import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; public class GridLayoutDemo { public static void main(String args[]) { JFrame frm = new JFrame(); frm.setLayout(new GridLayout(2, 3, 4, 4)); frm.add(new JButton("ONE")); frm.add(new JButton("TWO")); frm.add(new JButton("THREE")); frm.add(new JButton("FOUR")); frm.add(new JButton("FIVE")); frm.setSize(200, 200); frm.setVisible(true); } } Prof. Nécio Veras
  • 36. Gerenciadores de Layout – Layout Managers ● GridBagLayout – Layout mais flexível e mais complexo do Swing – Dispõe os componentes em um grid de linhas e colunas ● Componentes podem se estender a várias linhas ou colunas Prof. Nécio Veras
  • 37. Gerenciadores de Layout – Layout Managers ● GroupLayout – Nativo no Swing a partir do Java 6. – Agrupa componentes hierarquicamente para posicioná-los em um contêiner. – Foi projetado especialmente para uso em construtores de tela, mas pode ser codificado manualmente. – Suporta 2 tipos de agrupamentos: ● Sequencial – elementos são posicionados sequencialmente, um após o outro. ● Paralelo – Alinha os elementos em 1 de 4 maneiras possíveis. Prof. Nécio Veras
  • 38. Gerenciadores de Layout – Layout Managers ● O GroupLayout permite: – Alinhar componentes horizontal e verticalmente; – Inserir componentes inteligentemente; – Alinhar a margem dos componentes; – Esticar os componentes para esquerda, direita ou ambos; – Esticar os componentes para o alto, baixo ou ambos; – Definir o alinhamento, tamanho e espaçamento. Prof. Nécio Veras
  • 39. Eventos Prof. Nécio Veras
  • 40. Eventos ● Implementação de manipuladores de eventos – Declaração de classe que implementa a interface para tratamento de eventos do tipo requerido. – Código que implementa os métodos definidos na interface listener. – Registro de instâncias de classe manipuladoras de eventos como ouvintes para o evento do componente desejado. ● Adição de ouvintes através de métodos como: – addActionListener – addWindowListener Prof. Nécio Veras
  • 41. Eventos ● Exemplos de Ouvintes usados no Swing: – ActionListener ● Cliques em botões, Enter em campos, cliques em menus – WindowListener ● Manipulação de frames – MouseListener e MouseMotionListener ● Pressionamento de botão do mouse sobre componentes ● Movimentação do mouse sobre componentes Prof. Nécio Veras
  • 42. Implementando Ouvinte import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; public class MeuOuvinte implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Ação!!!"); } } Prof. Nécio Veras
  • 43. Registrando um Ouvinte import java.awt.FlowLayout; import javax.swing.*; public class FTeste { public static void main(String[] args) { JFrame janela = new JFrame("Simples"); janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); janela.setLayout(new FlowLayout()); JLabel rotulo = new JLabel(); rotulo.setText("Java Swing"); janela.add(rotulo); JButton botao = new JButton(); botao.setText("Botão Útil"); botao.addActionListener(new MeuOuvinte()); janela.add(botao); janela.pack(); janela.setVisible(true); } } Prof. Nécio Veras
  • 44. Registrando e Implementando Ouvinte através de uma classe interna estática import java.awt.FlowLayout; import java.awt.event.*; import javax.swing.*; public class FTeste { public static void main(String[] args) { final JFrame janela = new JFrame("Simples"); janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); janela.setLayout(new FlowLayout()); JLabel rotulo = new JLabel(); rotulo.setText("Java Swing"); janela.add(rotulo); JButton botao = new JButton(); botao.setText("Botão Útil"); botao.addActionListener(new MeuOuvinte()); janela.add(botao); janela.pack(); janela.setVisible(true); } public static class MeuOuvinte implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "Ação!!!"); } } } Prof. Nécio Veras
  • 45. Registrando e Implementando Ouvinte através de uma classe interna anônima import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class FTeste { public static void main(String[] args) { final JFrame janela = new JFrame("Simples"); janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); janela.setLayout(new FlowLayout()); JLabel rotulo = new JLabel(); rotulo.setText("Java Swing"); janela.add(rotulo); JButton botao = new JButton(); botao.setText("Botão Útil"); botao.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(janela, "Ação!!!"); } }); janela.add(botao); janela.pack(); janela.setVisible(true); } } Prof. Nécio Veras
  • 46. Exercício ● Construa uma calculadora simples baseada na interface gráfica abaixo. ● Os resultados devem estar desabilitados. ● Deve haver teclas de atalho para acessar as caixas de texto e os botões. ● Deve haver dicas para explicar as caixas de texto e botões. ● Os números só devem ser aceitos se forem válidos. ● Dica: – Botão padrão: ● this.getRootPane().setDefaultButton(jButtonCalcula); Prof. Nécio Veras