Você está na página 1de 31

GUI

Cecilia E. Gi
uffra P.
Sobre a aula de hoje
Ø  Objetivo da aula: apresentar conteúdos sobre
interface gráfica.
Ø  Metodologia: Aula expositiva, com recursos de
imagem, exemplos e trabalhos práticos em aula
Ø  Textos base: DEITEL, Harvey M.; DEITEL, Paul J.
Java como programar. Porto Alegre: Bookman,
2001. 1202p.

Onde estamos?
Introdução ao desenvolvimento de sistemas reusáveis de software

Conceitos e mecanismos da programação orientada a objetos


Herança e Classes abstratas Diagrama de Bibliotecas de
Objetos e classes Tipos genéricos
Polimorfismo e interfaces classes classes

Técnicas de uso comum em sistemas orientados a objetos


Interface gráfica com o Persistencia de dados e
Tratamento de exceções Coleções
usuário objetos (serialização)

Práticas de Desenvolvimento de Software


Introdução a práticas/técnicas de desenvolvimento Construção de sistemas de software que demonstrem as
orientado a objetos características básicas da orientação a objetos.
Componentes adicionais
Ø  Objetivos
Ø  Criar e manipular controle deslizantes, menus, menus
pop-up e janelas.
Ø  Criar uma interface de múltiplos documento com
JDesktopPane e JInternalFrame
Slider
Ø  JSlider permite a um usuário selecionar a partir de um intervalo
de valores inteiros.

Slider horizontal com marcas de medida (tick mark) e marcador (thumb)

Ø  JSliders podem ser personalizados para exibir:


Ø  Marcas de medidas principais.
Ø  Marcas de medidas secundárias.
Ø  Rótulos para as marcas de medidas.
Ø  Suportam marcas de aderência, que fazem a miniatura,
quando posicionada entre duas marcas, adere à marca mais
próxima.
Ø  JSliders geram ChangeEvents
Ø  Implementação da interface ChangeListener com método stateChanged
Slider
Ø  JSlider, como outros componentes GUI Swing, suporta
interações do usuário pelo mouse e teclado.
Ø  JSlider precisa ter o foco (ser o componente selecionado da GUI)
Ø  Ex: Setas direita e esquerda fazem o marcador do slider aumentar
ou diminuir em 1.
Ø  JSlider têm orientação horizontal ou vertical padrão
Ø  Horizontal: valor mínimo na esquerda
Ø  Vertical: valor mínimo na parte inferior
Ø  As posições podem ser alteradas utilizando o método setInverted
com argumento boolean true.
Exercício
Ø  Pegue as classes OvalPanel e SliderFrame do moodle
e altere para:
Ø  O slider abrir com o marcador posicionado no meio
dele e com o tamanho certo do círculo
Ø  Verifique que ao mover o slider o marcador o círculo
diminua e aumente corretamente.
Ø  Crie uma nova classe RectPanel (com base na
OvalPanel) cujo paintComponent crie o contorno de
um retângulo
Ø  Crie o slider vertical para mudar o tamanho do
retângulo
Menus com Frames
Ø  Em Swing menus podem ser anexados somente aos
objetos das classes que fornecem o método setJMenuBar.
Ø  JFrame
Ø  JApplet

Ø  Classes utilizadas para declarar menus:


Ø  JMenuBar, JMenu, JMenuItem, JCheckBoxMenuItem,
JRadioButtonMenuItem

Ø  Menus simplificam GUIs porque os componentes podem


ficar ocultos dentro deles.
Classe Descrição

JMenuBar •  Subclasse JComponent


•  Contém métodos para gerenciar barra de menus (contêiner de menus)

JMenu •  Subclasse de javax.swing.JMenuItem


•  Contém métodos para gerenciar menus
•  Menus contêm itens de menu e são adicionados a barras de menus ou a outros
menus (Submenus).
•  Menu clicado expande.

JMenuItem •  Subclasse de javax.swing.AbstractButton


•  Contém métodos para gerenciar itens de menu.
•  Item de menu é componente que quando selecionado resulta em um evento de
ação
•  Item de menu pode ser utilizado para iniciar uma ação ou ser um submenu
JCheckBoxMenuItem •  Subclasse de javax.swing.JMenuItem
•  Contém métodos para gerenciar itens de menu que podem ser ativados ou
desativados
•  Quando um JCheckBoxMenuItem é ativado uma marca de verificação aparece à
esquerda do item. Quando é selecionado novamente a marca é removida

JRadioButtonMenuItem •  Subclasse de javax.swing.JMenuItem


•  Contém métodos para gerenciar itens de menu igual que o JCheckBoxMenuItem
•  Quando múltiplos JRadioButtonMenuItem fazem parte de um ButtonGroup
apenas um item do grupo pode ser selecionado de cada vez.
•  Quando um item é selecionado, um círculo preenchido aparece à esquerda do
item de menu. Quando outro item é selecionado o círculo preenchido do item
anterior é removido.
Exercícios
Ø  Adicione no Menu File um item de menu “Exit” com:
Ø  Mnemonic = x
Ø  Classe interna anonima chamando ActionListener
Ø  Dentro do actionPerformed coloque somente a linha:
Ø  System.exit(0);

Ø  Adicione no Submenu Font um JCheckBoxMenuItem de itens


com:
Ø  Opções Bold e Italic
Ø  Listener utilizando a
classe StyleHandler
Ø  Adicione um novo Menu
“Background”com item
menus de cores
diferentes que mudem o
Backgroun do frame
JPopupMenu
Ø  No Swing menus pop-up sensíveis ao contexto são
criados com a classe JPopupMenu
Ø  Os menus fornecem opções que são específicas do
componente pelo qual o evento de gatilho pop-up
foi gerado.
Ø  Acionamento quando usuário pressiona e libera botão
direito do mouse
JDesktopPane e
JInternalFrame
Ø  Para trabalhar com interfaces de múltiplos
documentos (Multiple-Document Interface – MDI)
Ø  Janela principal ou janela-pai contendo janelas-filhas
Ø  Para gerenciar vários documentos abertos que estão
sendo processados em paralelo
Exercícios
Ø  Adicione um novo menu que agregue frames internos
que sejam de cores diferentes
JTabbedPane
Ø  Organiza componentes de GUI em camadas
Ø  Somente uma é visível de cada vez
Ø  Usuários acessam as camadas utilizando guias
Ø  Guias ficam na parte superior por padrão
Ø  Podem ser posicionadas na parte inferior, direita ou
esquerda do JTabbedPane

Exercícios
Ø  Crie o tab 2 com o label Panel dois e background
diferente à cor mostrada na aba.
Ø  Crie um tab 4 com gridBagLayout, com o seguinte
conteúdo:


Exercícios
Ø  Crie uma interface com menus para fazer cadastro
Ø  No menu deve ter os itens:
Ø  Novo cadastro
Ø  Procurar cadastro pelo nome
Ø  Apagar cadastro
Ø  Ao clicar em cada um dos itens o sistema muda a interface:
Ø  Novo cadastro (nome, sobrenome, data de nascimento, CPF, endereço, telefone,
email), com botão para salvar.
Ø  Procurar cadastro pelo nome: Campo de texto e botão para fazer a busca
Ø  Apagar cadastro: Campo de texto e botão para fazer a busca, actionListener
no botão que abre um pop-up com a informação “Deseja apagar os dados de
[Le o que estiver inserido no campo de texto]” com um botão de confirmar e
um de cancelar.
Ø  Ao clicar no botão salvar do novo cadastro os dados devem ser guardados
em um arquivo.
Ø  Ao clicar no botão de procurar deve retornar o registro do usuário
Ø  Ao clicar no botão de confirmar o registro deve ser apagado do arquivo.
Exercícios
Ø  Aprimore o programa do Slider permitindo que o usuário altere
o raio com um JSlider. Limite os raios no intervalo de 100 a 200.
À medida que o raio muda, o diametro, a área e a circunferência
devem ser atualizados e mostrados. Os desenhos devem ser
feitos em uma subclasse de JPanel e os resultados dos cálculos
devem ser exibidos em um JTextArea de leitura.

Ø  Declare uma subclasse de JPanel chamada EscolhaDeCor que


forneça três objetos JSlider e três objetos JTextField. Cada
JSlider representa os valores de 0 a 255 para as partes azul,
verde e vermelha de uma cor. Utilize estes valores como
argumentos para o construtor Color a Aim de criar um novo
objeto Color. Exiba o valor atual de cada JSlider no
correspondente JTextField. Quando o usuário altera o valor do
JSlider, o JTextField deve ser alterado correspondentemente.
Utilize seu novo componente GUI como parte de um aplicativo
que exiba o valor Color atual desenhando um retângulo
preenchido.
Ex e rc í c i o s