SlideShare uma empresa Scribd logo
Interfaces Gráficas em Java
com Swing
Arthur Emanuel de Oliveira Carosia
Swing
• Biblioteca com muitas possibilidades de
elementos para interface gráfica em Java
• A partir do Java 1.2
• Uso simples
• Portabilidade
– O look-and-feel do Swing é único em todas as
plataformas onde roda, seja ela Windows, Linux,
ou qualquer outra.
Portabilidade
• Desenvolvida tendo em mente o máximo de
portabilidade possível.
• Por exemplo,
– o posicionamento relativo de componentes, em
detrimento do uso de posicionamento fixo
Look And Fell
• Aparência da aplicação
– Cores
– Formatos
– Etc
• Por padrão, o Java vem com um look-and-feel
próprio, que se comporta exatamente da
mesma forma em todas as plataformas
suportadas.
Look And Feel
• Por isso é possível alterar qual o look-and-feel
a ser usado em nossa aplicação.
– Windows
– Mac OS
– Look and Feel baixados da internet.
Pacote
• A biblioteca do Swing está no
pacote javax.swing:
– Import javax.swing;
JOptionPane
• A classe mais simples do Swing é
a JOptionPane que mostra janelas de
mensagens, confirmação e erros, entre outras.
• A classe JOptionPane nos proporciona uma
série de métodos estáticos que ao serem
invocados criam caixas de diálogos simples e
objetivas.
JOptionPane
• A classe mais simples do Swing é
a JOptionPane que mostra janelas de
mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
JOptionPane
• A classe mais simples do Swing é
a JOptionPane que mostra janelas de
mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
Frame no qual a caixa de diálogo é exibida.
Se o valor for null, então é utilizado um Frame padrão.
JOptionPane
• A classe mais simples do Swing é
a JOptionPane que mostra janelas de
mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
Mensagem a Ser Exibida
JOptionPane
• A classe mais simples do Swing é
a JOptionPane que mostra janelas de
mensagens, confirmação e erros, entre outras.
JOptionPane.showMessageDialog(null, "Minha mensagem!");
JOptionPane
• Outros métodos
JOptionPane
Exercício
• Adapte o problema da biblioteca para que seja
feita leitura dos dados do teclado utilizando a
classe JOptionPane.
• Utilize também um JOptionPane para exibir
mensagem de erro caso o nome digitado para
alguma String do programa seja vazio ou nulo.
JFrame
• Moldura ou janela do programa
• Exibe elementos de interface do usuário
• Interações:
– Maximizar, minimizar, fechar
– Invocar outros Jframes ou janelas
JFrame
JPanel
• Conteúdo (Painel) que será exibido no Jframe
• Possui componentes (JComponents) que serão
exibidos no Jframe
• Exemplos de Componentes:
– Botões, imagens, texto, etc
• Sobre um Jframe, podem ser
encaixados vários JPanels
JPanel
JLabel
• Rótulos que podem conter imagens ou textos
que podem ser exibidos em frames
• Os JLabels são classes derivadas da
JComponent e fazem parte do pacote swing.
• Uso:
– JLabel meuRotulo = new JLabel(“Meu Texto”);
JTextField
• Caixas de Texto
• Métodos importantes:
– getText(String)
– String:setText()
– setEditable(Boolean)
• Uso:
– JTextField texto = new JTextField(“Conteudo”);
• Para senhas, existe a classe JPasswordField, que
possui comportamento semelhante ao JTextField.
JButton
• Botões que ao serem clicados disparam um
evento.
• Este evento pode ser tratado pelo programador
para que o programa siga seu fluxo adequado.
• Uso:
– JButton botao = new JButton("Clique em mim!");
• Tratamentos de Eventos serão apresentados mais
adiante nesta mesma aula.
Exercício
• Crie uma interface simples com rótulos, campos de
texto e botões para login do usuário, contendo os
seguintes elementos:
– Nome de usuário
– Senha
– Botão de limpar
– Botão de login
• Crie um ArrayList com 5 usuários que podem ter acesso
à sua aplicação.
• Implemente a funcionalidade que, ao clicar no botão
de login, verifica se os dados digitados pertencem a
esse ArrayList.
Integração de Interface com
Código-Fonte
• É uma boa prática separar o código da
aplicação do código da interface.
• Evitar a mistura de código da lógica da
aplicação com código de interface do usuário.
• Criação de pacotes separando o que é
interface do que é lógica da aplicação.
Exercício
• Incremente a aplicação em Java que cadastra
livros e artigos em uma biblioteca.
• Crie uma interface adequada para esta
funcionalidade utilizando JFrame, JPanel,
JButton, JTextField e JLabel.
Eventos
• Um programa nada mais é que uma série de
opções, onde cada usuário vai fazer o que
quiser, clicando em botões, apertando teclas
do teclado, rolando a barra de informações,
marcando, selecionando, escrevendo,
minimizando, fechando e uma infinidade de
possibilidades.
• Cada vez que o usuário faz uma destas coisas,
dizemos que foi realizado um evento.
Eventos
• O que a GUI (Graphic User Interface) faz é
nada mais que tratar eventos, que são
normalmente disparados pelo usuário.
Eventos
• A classe ActionListener é uma interface, ou
seja, é classe composta apenas de métodos
abstratos.
– Classe responsável pelo tratamento de eventos.
– A classe não sabe que tipos de eventos vamos
tratar em um aplicativo
– Necessita ser implementada pelo aplicativo que
for tratar eventos
– essa classe é que vai fica 'esperando' algo ocorrer
no programa (um evento) para ser tratado
Eventos
• A interface ActionListener possui somente um
método:
– actionPerformed, é o responsável por tomar
alguma ação caso algum evento ocorra.
• A interface fica na espera de algum evento, e
caso ocorra ele é imediatamente passado para
o método actionPerformed
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
Eventos
• Event Handling
– Tratador de eventos
• Implementar a classe ActionListener
O método actionPerformed recebe
um argumento 'evento' do
tipo ActionEvent.
Este argumento 'evento' vai
armazenar a natureza do evento, ele
sabe especifica e exatamente que
componente ocorreu o evento.
Tal componente está armazenado no
método getSource() deste objeto.
Eventos
• Existem diferentes formas de tratar eventos.
• Seja com uma classe exclusiva para isso, ou classes
internas ou objetos anônimos.
• O NetBeans possui uma interface agradável e simples
para tratar eventos, que será apresentado mais à
frente.
• Referências
– http://www.javaprogressivo.net/2013/11/Tratamento-de-
eventos-extends-implements-classe-interna-objeto-
anonimo-mudar-background-jframe.html
– http://www.javaprogressivo.net/2013/11/Tratamento-de-
eventos-extends-implements-classe-interna-objeto-
anonimo-mudar-background-jframe.html
JCheckBox
• Fornece diversas opções para escolha
A lógica dela, em Java, é que se ela estiver marcada, é
como se retornasse o valor lógico true, e se não estiver
marcada, retorna false.
Precisamos tratar os eventos e ações, e isso é possível em
JCheckBox através da classe ItemListener e seu método
itemStateChanged.
JCheckBox
• Fornece diversas opções para escolha
JCheckBox java = new JCheckBox("Java");
JCheckBox php = new JCheckBox("PHP");
JCheckBox csharp = new JCheckBox("C#");
JCheckBox c = new JCheckBox("C");
Método que verifica se um botão
foi selecionado:
boolean:isSelected()
JRadioButton
• Fornece uma opção de escolha única entre diversas
opções.
• Precisa de um gerenciador de eventos, handler.
– Deve, obrigatoriamente, implementar a interface
ItemListener.
– Nessa interface, devemos implementar, obrigatoriamente,
o método itemStateChanged.
Método que vai verifica se algo foi clicado, marcado ou
desmarcado.
JRadioButton
JRadioButton java = new JRadioButton("Java", false);
JRadioButton csharp = new JRadioButton("C#", false);
Método que verifica se um botão foi selecionado:
boolean:isSelected()
ButtonGroup
• Controla se uma interface necessita de vários
grupos de botões diferentes.
• Declarar objetos que são os grupos e adicionar
a esses grupos os RadioButtons que são
relacionados a cada um.
ButtonGroup grupo1 = new ButtonGroup();
grupo1.add(java);
grupo1.add(csharp);
Exercícios
• Faça com que apareçam as interfaces na
seqûencia: interface de login, depois interface de
cadastrar livros.
• O usuário que for cadastrado no sistema irá ter
acesso ao cadastro dos livros quando clicar no
botão de Login e gerar um evento de clique do
mouse.
• Incremente a inferface de cadastro de livros para
ter um componente que discrimine se o cadastro
é de livros ou artigos.
Exercícios
• Faça um programa que receba os coeficientes
de uma equação do segundo grau e retorne
suas raízes, mesmo as complexas, através de
caixas de diálogo (com JOptionPane).
• Considere que uma equação do segundo grau
é uma classe com os atributos a, b e c e
possui métodos que determinam suas raízes.
Exercícios
• Faça outra versão para o mesmo programa
utilizando Jframe, caixas de texto para a
inserção dos componentes a,b e c e um botão
que calcula o resultado da equação.
• Faça com que os resultados da equação
preencham um campo de texto após o clique no
botão.
• Esse campo de texto não pode ser modificado
pelo usuário, somente pela aplicação.
Utilizando o NetBeans
• O NetBeans possui um ambiente dedicado ao
design de interfaces de usuário.
• A manipulação dos componentes de interface
é realizada visualmente.
• Toda manipulação visual tem um efeito no
código-fonte, que é gerado automaticamente
pela IDE.
Utilizando o NetBeans
Criando um novo JFrame
Utilizando o Netbeans
Janela do Design da
Interface do Usuário
Utilizando o Netbeans
Aba de Design
Utilizando o Netbeans
Janela que contém os
componentes que
podem ser inseridos na
interface
Utilizando o Netbeans
Janela que contém:
• Propriedades dos componentes
• Eventos dos componentes
• Elementos associados ao código-
fonte
Utilizando o Netbeans
Código-fonte resultado da geração
automática pelo Netbeans
Exercício
• Crie um jogo de adivinhar palavras.
• Cada palavra possui a sua quantidade de caracteres e
várias dicas, que serão exibidas para o usuário.
• Ao acertar uma palavra, o usuário ganha 5 pontos e a
próxima palavra é exibida.
• O usuário pode ter 3 chances de errar uma palavra até
dar fim de jogo e exibir a sua pontuação acumulada.
• O jogo deve possuir uma interface gráfica composta
de:
– Caixa de texto para digitar a palavra
– Botão para confirmar a palavra digitada
– Textos para exibir as dicas das palavras
Referências
• http://www.caelum.com.br/apostila-java-
testes-xml-design-patterns/interfaces-graficas-
com-swing/#5-3-look-and-feel
• http://www.javaprogressivo.net/

Mais conteúdo relacionado

PDF
Java - Primeiros passos
Professor José de Assis
 
DOCX
Apostila programação visual usando java e netbeans
George Dantas
 
PPTX
10 Java Script - Exemplos práticos
Centro Paula Souza
 
PDF
Python Interface Gráfica Tkinter
antonio sérgio nogueira
 
PPTX
JAVA - Orientação a Objetos
Elaine Cecília Gatto
 
PDF
Introdução a JavaScript
Bruno Catão
 
ODP
Aula02 - JavaScript
Jorge Ávila Miranda
 
PPT
Aula javascript
Gabriel Moura
 
Java - Primeiros passos
Professor José de Assis
 
Apostila programação visual usando java e netbeans
George Dantas
 
10 Java Script - Exemplos práticos
Centro Paula Souza
 
Python Interface Gráfica Tkinter
antonio sérgio nogueira
 
JAVA - Orientação a Objetos
Elaine Cecília Gatto
 
Introdução a JavaScript
Bruno Catão
 
Aula02 - JavaScript
Jorge Ávila Miranda
 
Aula javascript
Gabriel Moura
 

Mais procurados (20)

PDF
Orientação a Objetos em Python
Luciano Ramalho
 
PPTX
Selenium WebDriver
Yuriy Bezgachnyuk
 
PDF
Python - Introdução Básica
Christian Perone
 
PDF
Tutorial Django + Python
Mateus Padua
 
PPTX
Programação Estruturada e Orientada a Objetos
Albert Bitencourte de Lemos
 
PPTX
Python basics
ssuser4e32df
 
PPTX
Functions-(Global-Local-Nonlocal) (1).pptx
vinnisart
 
PPT
Java operators
Shehrevar Davierwala
 
PDF
Data Persistence in Android with Room Library
Reinvently
 
PDF
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Rodrigo Almeida
 
PPSX
Polimorfismo java
FAFICA
 
PDF
POO - Aula 1
Diego Armando
 
PPT
Java básico - Módulo 06: Array
Professor Samuel Ribeiro
 
PDF
Data Driven Framework in Selenium
Knoldus Inc.
 
PPTX
Aula05 android persistencia
Roberson Alves
 
PDF
Java AWT
Daniel Arndt Alves
 
PDF
Aula de Introdução - JAVA
Moises Omena
 
PDF
Padrão Adapter
Eduardo Mendes
 
PDF
Usando JMeter para testar sua aplicação JSF
Jadson Santos
 
PPT
Lógica de Programação - Estrutura de repetição
Wesley R. Bezerra
 
Orientação a Objetos em Python
Luciano Ramalho
 
Selenium WebDriver
Yuriy Bezgachnyuk
 
Python - Introdução Básica
Christian Perone
 
Tutorial Django + Python
Mateus Padua
 
Programação Estruturada e Orientada a Objetos
Albert Bitencourte de Lemos
 
Python basics
ssuser4e32df
 
Functions-(Global-Local-Nonlocal) (1).pptx
vinnisart
 
Java operators
Shehrevar Davierwala
 
Data Persistence in Android with Room Library
Reinvently
 
Troca de contexto segura em sistemas operacionais embarcados utilizando técni...
Rodrigo Almeida
 
Polimorfismo java
FAFICA
 
POO - Aula 1
Diego Armando
 
Java básico - Módulo 06: Array
Professor Samuel Ribeiro
 
Data Driven Framework in Selenium
Knoldus Inc.
 
Aula05 android persistencia
Roberson Alves
 
Aula de Introdução - JAVA
Moises Omena
 
Padrão Adapter
Eduardo Mendes
 
Usando JMeter para testar sua aplicação JSF
Jadson Santos
 
Lógica de Programação - Estrutura de repetição
Wesley R. Bezerra
 
Anúncio

Destaque (11)

PDF
2.4.13+WQA+Manufactured+Food+Standard+Version+8
Ben Robinson
 
PDF
ASCPcertificate
Ashar Bashir
 
PDF
Project Management Webinars
Thomas Nik. Vardalas, BSc, PgD
 
PPT
La Transiberiana - Storia e geografia di un percorso
scrivarolo13
 
PDF
How to Think in RxJava Before Reacting
IndicThreads
 
PDF
Reactive programming with Rxjava
Christophe Marchal
 
PPTX
Android Animator
Charile Tsai
 
PPTX
Microvascular complications of diabetes pathophysiology
MWIZERWA JEAN-LUC
 
DOCX
2016 CV 1
moshwela andrew mekwa
 
PDF
Acqua!!!...Oro Blu? - Ecologicamente
Consorzio LaMMA - Corso UdC
 
2.4.13+WQA+Manufactured+Food+Standard+Version+8
Ben Robinson
 
ASCPcertificate
Ashar Bashir
 
Project Management Webinars
Thomas Nik. Vardalas, BSc, PgD
 
La Transiberiana - Storia e geografia di un percorso
scrivarolo13
 
How to Think in RxJava Before Reacting
IndicThreads
 
Reactive programming with Rxjava
Christophe Marchal
 
Android Animator
Charile Tsai
 
Microvascular complications of diabetes pathophysiology
MWIZERWA JEAN-LUC
 
Acqua!!!...Oro Blu? - Ecologicamente
Consorzio LaMMA - Corso UdC
 
Anúncio

Semelhante a Java: Introducao ao Swing (20)

PDF
Interface grafica
Ialis Cavalcante
 
PDF
Apresentação-Resumo sobre o Java Swing.
Gabriel Jesus
 
DOCX
Revisão de Java paraAV1.docx
VeronicaAparecida5
 
PDF
08 aula pratica_chaves
nooblath
 
PDF
Java swingcomponentes
Delliany Miranda
 
PDF
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
anapatricio
 
PDF
Apostila:Curso de java II
Verônica Veiga
 
PPTX
Java gui
Deywson Johnny
 
PDF
Aplicações java com netbeans
Thalles Anderson
 
PDF
Interfaces Gráficas em Java Parte 1
Elaine Cecília Gatto
 
PDF
Interfaces Gráficas em Java Parte 2
Elaine Cecília Gatto
 
PDF
Introdução ao Java Swing (Interface)
Sérgio Souza Costa
 
PDF
Tutorial java swing
izalem nascimento
 
PDF
Java interface gráfica swing
Armando Daniel
 
PDF
Capitulo 14 -_componentes_gui_parte_1
Pedro Neto
 
PPT
IHC - Java Interface com o Usuário (Parte 1)
Wellington Oliveira
 
PPT
Tutorial1
Braulio Neto
 
PPT
Java - Gestão de componentes curso profissional
a41172
 
Interface grafica
Ialis Cavalcante
 
Apresentação-Resumo sobre o Java Swing.
Gabriel Jesus
 
Revisão de Java paraAV1.docx
VeronicaAparecida5
 
08 aula pratica_chaves
nooblath
 
Java swingcomponentes
Delliany Miranda
 
Aula 1 - Introdução à Interface gráfica do JAVA.pdf
anapatricio
 
Apostila:Curso de java II
Verônica Veiga
 
Java gui
Deywson Johnny
 
Aplicações java com netbeans
Thalles Anderson
 
Interfaces Gráficas em Java Parte 1
Elaine Cecília Gatto
 
Interfaces Gráficas em Java Parte 2
Elaine Cecília Gatto
 
Introdução ao Java Swing (Interface)
Sérgio Souza Costa
 
Tutorial java swing
izalem nascimento
 
Java interface gráfica swing
Armando Daniel
 
Capitulo 14 -_componentes_gui_parte_1
Pedro Neto
 
IHC - Java Interface com o Usuário (Parte 1)
Wellington Oliveira
 
Tutorial1
Braulio Neto
 
Java - Gestão de componentes curso profissional
a41172
 

Mais de Arthur Emanuel (20)

PPTX
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Arthur Emanuel
 
DOCX
Exercícios - Herança - Java
Arthur Emanuel
 
DOCX
Orientação a Objetos - Introdução - Exercícios
Arthur Emanuel
 
PPTX
Android - Integração com Facebook
Arthur Emanuel
 
PPTX
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Arthur Emanuel
 
PPTX
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Arthur Emanuel
 
PPTX
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Arthur Emanuel
 
PPTX
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Arthur Emanuel
 
PPTX
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Arthur Emanuel
 
PPTX
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Arthur Emanuel
 
PPTX
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Arthur Emanuel
 
DOCX
Desenvolvendo Jogos Para Android - Exercício
Arthur Emanuel
 
PPTX
CSS 3
Arthur Emanuel
 
PPTX
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
Arthur Emanuel
 
PPTX
HTML - Introducao
Arthur Emanuel
 
PPTX
Android - Google Maps
Arthur Emanuel
 
PPTX
Android - Bluetooth
Arthur Emanuel
 
PPTX
Android - Acelerometro e GPS
Arthur Emanuel
 
PPTX
Android - Consumindo Webservices
Arthur Emanuel
 
Apresentação - Minicurso de Introdução a Python, Data Science e Machine Learning
Arthur Emanuel
 
Exercícios - Herança - Java
Arthur Emanuel
 
Orientação a Objetos - Introdução - Exercícios
Arthur Emanuel
 
Android - Integração com Facebook
Arthur Emanuel
 
Desenvolvimento para Android - Acelerômetro, GPS, Multimidia
Arthur Emanuel
 
Aula 06 - Desenvolvimento de Jogos para Android - Física e Menu
Arthur Emanuel
 
Aula 05 - Desenvolvimento de Jogos para Android - Layout e Som
Arthur Emanuel
 
Aula 04 - Desenvolvendo Jogos Para Android - Pontuação e Colisao
Arthur Emanuel
 
Aula 03 - Desenvolvendo Jogos Para Android - Obstáculos
Arthur Emanuel
 
Aula 02 - Desenvolvendo Jogos Para Android - Controle do Jogo
Arthur Emanuel
 
Aula 01 - Desenvolvendo Jogos Para Android - Ambiente do Jogo
Arthur Emanuel
 
Desenvolvendo Jogos Para Android - Exercício
Arthur Emanuel
 
HTML - Listas, Estilos, Tabelas, Div, Span, Formulário
Arthur Emanuel
 
HTML - Introducao
Arthur Emanuel
 
Android - Google Maps
Arthur Emanuel
 
Android - Bluetooth
Arthur Emanuel
 
Android - Acelerometro e GPS
Arthur Emanuel
 
Android - Consumindo Webservices
Arthur Emanuel
 

Último (7)

PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 

Java: Introducao ao Swing

  • 1. Interfaces Gráficas em Java com Swing Arthur Emanuel de Oliveira Carosia
  • 2. Swing • Biblioteca com muitas possibilidades de elementos para interface gráfica em Java • A partir do Java 1.2 • Uso simples • Portabilidade – O look-and-feel do Swing é único em todas as plataformas onde roda, seja ela Windows, Linux, ou qualquer outra.
  • 3. Portabilidade • Desenvolvida tendo em mente o máximo de portabilidade possível. • Por exemplo, – o posicionamento relativo de componentes, em detrimento do uso de posicionamento fixo
  • 4. Look And Fell • Aparência da aplicação – Cores – Formatos – Etc • Por padrão, o Java vem com um look-and-feel próprio, que se comporta exatamente da mesma forma em todas as plataformas suportadas.
  • 5. Look And Feel • Por isso é possível alterar qual o look-and-feel a ser usado em nossa aplicação. – Windows – Mac OS – Look and Feel baixados da internet.
  • 6. Pacote • A biblioteca do Swing está no pacote javax.swing: – Import javax.swing;
  • 7. JOptionPane • A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras. • A classe JOptionPane nos proporciona uma série de métodos estáticos que ao serem invocados criam caixas de diálogos simples e objetivas.
  • 8. JOptionPane • A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras. JOptionPane.showMessageDialog(null, "Minha mensagem!");
  • 9. JOptionPane • A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras. JOptionPane.showMessageDialog(null, "Minha mensagem!"); Frame no qual a caixa de diálogo é exibida. Se o valor for null, então é utilizado um Frame padrão.
  • 10. JOptionPane • A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras. JOptionPane.showMessageDialog(null, "Minha mensagem!"); Mensagem a Ser Exibida
  • 11. JOptionPane • A classe mais simples do Swing é a JOptionPane que mostra janelas de mensagens, confirmação e erros, entre outras. JOptionPane.showMessageDialog(null, "Minha mensagem!");
  • 14. Exercício • Adapte o problema da biblioteca para que seja feita leitura dos dados do teclado utilizando a classe JOptionPane. • Utilize também um JOptionPane para exibir mensagem de erro caso o nome digitado para alguma String do programa seja vazio ou nulo.
  • 15. JFrame • Moldura ou janela do programa • Exibe elementos de interface do usuário • Interações: – Maximizar, minimizar, fechar – Invocar outros Jframes ou janelas
  • 17. JPanel • Conteúdo (Painel) que será exibido no Jframe • Possui componentes (JComponents) que serão exibidos no Jframe • Exemplos de Componentes: – Botões, imagens, texto, etc • Sobre um Jframe, podem ser encaixados vários JPanels
  • 19. JLabel • Rótulos que podem conter imagens ou textos que podem ser exibidos em frames • Os JLabels são classes derivadas da JComponent e fazem parte do pacote swing. • Uso: – JLabel meuRotulo = new JLabel(“Meu Texto”);
  • 20. JTextField • Caixas de Texto • Métodos importantes: – getText(String) – String:setText() – setEditable(Boolean) • Uso: – JTextField texto = new JTextField(“Conteudo”); • Para senhas, existe a classe JPasswordField, que possui comportamento semelhante ao JTextField.
  • 21. JButton • Botões que ao serem clicados disparam um evento. • Este evento pode ser tratado pelo programador para que o programa siga seu fluxo adequado. • Uso: – JButton botao = new JButton("Clique em mim!"); • Tratamentos de Eventos serão apresentados mais adiante nesta mesma aula.
  • 22. Exercício • Crie uma interface simples com rótulos, campos de texto e botões para login do usuário, contendo os seguintes elementos: – Nome de usuário – Senha – Botão de limpar – Botão de login • Crie um ArrayList com 5 usuários que podem ter acesso à sua aplicação. • Implemente a funcionalidade que, ao clicar no botão de login, verifica se os dados digitados pertencem a esse ArrayList.
  • 23. Integração de Interface com Código-Fonte • É uma boa prática separar o código da aplicação do código da interface. • Evitar a mistura de código da lógica da aplicação com código de interface do usuário. • Criação de pacotes separando o que é interface do que é lógica da aplicação.
  • 24. Exercício • Incremente a aplicação em Java que cadastra livros e artigos em uma biblioteca. • Crie uma interface adequada para esta funcionalidade utilizando JFrame, JPanel, JButton, JTextField e JLabel.
  • 25. Eventos • Um programa nada mais é que uma série de opções, onde cada usuário vai fazer o que quiser, clicando em botões, apertando teclas do teclado, rolando a barra de informações, marcando, selecionando, escrevendo, minimizando, fechando e uma infinidade de possibilidades. • Cada vez que o usuário faz uma destas coisas, dizemos que foi realizado um evento.
  • 26. Eventos • O que a GUI (Graphic User Interface) faz é nada mais que tratar eventos, que são normalmente disparados pelo usuário.
  • 27. Eventos • A classe ActionListener é uma interface, ou seja, é classe composta apenas de métodos abstratos. – Classe responsável pelo tratamento de eventos. – A classe não sabe que tipos de eventos vamos tratar em um aplicativo – Necessita ser implementada pelo aplicativo que for tratar eventos – essa classe é que vai fica 'esperando' algo ocorrer no programa (um evento) para ser tratado
  • 28. Eventos • A interface ActionListener possui somente um método: – actionPerformed, é o responsável por tomar alguma ação caso algum evento ocorra. • A interface fica na espera de algum evento, e caso ocorra ele é imediatamente passado para o método actionPerformed import java.awt.event.ActionEvent; import java.awt.event.ActionListener;
  • 29. Eventos • Event Handling – Tratador de eventos • Implementar a classe ActionListener O método actionPerformed recebe um argumento 'evento' do tipo ActionEvent. Este argumento 'evento' vai armazenar a natureza do evento, ele sabe especifica e exatamente que componente ocorreu o evento. Tal componente está armazenado no método getSource() deste objeto.
  • 30. Eventos • Existem diferentes formas de tratar eventos. • Seja com uma classe exclusiva para isso, ou classes internas ou objetos anônimos. • O NetBeans possui uma interface agradável e simples para tratar eventos, que será apresentado mais à frente. • Referências – http://www.javaprogressivo.net/2013/11/Tratamento-de- eventos-extends-implements-classe-interna-objeto- anonimo-mudar-background-jframe.html – http://www.javaprogressivo.net/2013/11/Tratamento-de- eventos-extends-implements-classe-interna-objeto- anonimo-mudar-background-jframe.html
  • 31. JCheckBox • Fornece diversas opções para escolha A lógica dela, em Java, é que se ela estiver marcada, é como se retornasse o valor lógico true, e se não estiver marcada, retorna false. Precisamos tratar os eventos e ações, e isso é possível em JCheckBox através da classe ItemListener e seu método itemStateChanged.
  • 32. JCheckBox • Fornece diversas opções para escolha JCheckBox java = new JCheckBox("Java"); JCheckBox php = new JCheckBox("PHP"); JCheckBox csharp = new JCheckBox("C#"); JCheckBox c = new JCheckBox("C"); Método que verifica se um botão foi selecionado: boolean:isSelected()
  • 33. JRadioButton • Fornece uma opção de escolha única entre diversas opções. • Precisa de um gerenciador de eventos, handler. – Deve, obrigatoriamente, implementar a interface ItemListener. – Nessa interface, devemos implementar, obrigatoriamente, o método itemStateChanged. Método que vai verifica se algo foi clicado, marcado ou desmarcado.
  • 34. JRadioButton JRadioButton java = new JRadioButton("Java", false); JRadioButton csharp = new JRadioButton("C#", false); Método que verifica se um botão foi selecionado: boolean:isSelected()
  • 35. ButtonGroup • Controla se uma interface necessita de vários grupos de botões diferentes. • Declarar objetos que são os grupos e adicionar a esses grupos os RadioButtons que são relacionados a cada um. ButtonGroup grupo1 = new ButtonGroup(); grupo1.add(java); grupo1.add(csharp);
  • 36. Exercícios • Faça com que apareçam as interfaces na seqûencia: interface de login, depois interface de cadastrar livros. • O usuário que for cadastrado no sistema irá ter acesso ao cadastro dos livros quando clicar no botão de Login e gerar um evento de clique do mouse. • Incremente a inferface de cadastro de livros para ter um componente que discrimine se o cadastro é de livros ou artigos.
  • 37. Exercícios • Faça um programa que receba os coeficientes de uma equação do segundo grau e retorne suas raízes, mesmo as complexas, através de caixas de diálogo (com JOptionPane). • Considere que uma equação do segundo grau é uma classe com os atributos a, b e c e possui métodos que determinam suas raízes.
  • 38. Exercícios • Faça outra versão para o mesmo programa utilizando Jframe, caixas de texto para a inserção dos componentes a,b e c e um botão que calcula o resultado da equação. • Faça com que os resultados da equação preencham um campo de texto após o clique no botão. • Esse campo de texto não pode ser modificado pelo usuário, somente pela aplicação.
  • 39. Utilizando o NetBeans • O NetBeans possui um ambiente dedicado ao design de interfaces de usuário. • A manipulação dos componentes de interface é realizada visualmente. • Toda manipulação visual tem um efeito no código-fonte, que é gerado automaticamente pela IDE.
  • 41. Utilizando o Netbeans Janela do Design da Interface do Usuário
  • 43. Utilizando o Netbeans Janela que contém os componentes que podem ser inseridos na interface
  • 44. Utilizando o Netbeans Janela que contém: • Propriedades dos componentes • Eventos dos componentes • Elementos associados ao código- fonte
  • 46. Código-fonte resultado da geração automática pelo Netbeans
  • 47. Exercício • Crie um jogo de adivinhar palavras. • Cada palavra possui a sua quantidade de caracteres e várias dicas, que serão exibidas para o usuário. • Ao acertar uma palavra, o usuário ganha 5 pontos e a próxima palavra é exibida. • O usuário pode ter 3 chances de errar uma palavra até dar fim de jogo e exibir a sua pontuação acumulada. • O jogo deve possuir uma interface gráfica composta de: – Caixa de texto para digitar a palavra – Botão para confirmar a palavra digitada – Textos para exibir as dicas das palavras