Java Avançado 3

Fazer download em ppt, pdf ou txt
Fazer download em ppt, pdf ou txt
Você está na página 1de 120

JAVA

PROGRAMAÇÃO DE SISTEMAS
CORPORATIVOS
APRESENTAÇÃO

Professor: Humberto Delgado de Sousa


E-mail: humbertouniban@gmail.com
Fone - Vivo: (11)99615-1212
COMBINADO PEDAGÓGICO

• Equipamentos eletrônicos (Lei Estadual nº: 12.730


11/10/07)
• Presença
• Comportamento vs Participação
• Intervalo
• Composição das notas
• Material para prova
• Metodologia

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO

 Distribuição da tecnologia JAVA


 J SE (Java Standard Edition) – enfoca aplicações
cliente / servidor, não oferece suporte a
tecnologias para internet.
 J EE (Java Enterprise Edition) – enfoca
integração entre sistemas, oferece total suporte a
tecnologias para internet.
 J ME (Java Micro Edition) – enfoca o
desenvolvimento para computação móvel.

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO

 Distribuição da tecnologia J SE
 JRE (Java Runtime Environment) – ambiente
obrigatório para execução de programas em
Java.
 JVM (Java Virtual Machine) – emula CPU e memória
para execução dos programas JAVA.
 API (Application Programming Interface) – conjunto de
instruções que serão utilizados nas elaborações do
projeto em JAVA.

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO

 Características do J SE v 1.7.5
 Simplicidade
 OO
 Capacidade de distribuição
 Robustez
 Portabilidade

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO

 Mitos do J SE v. 1.7.5
 É uma extensão do HTML?
 Rodam somente em páginas WEB?
 O JavaScript é uma versão light do Java?
 É difícil programar em JAVA?
 O JAVA compila ou interpreta?

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO

 Distribuição da aplicação JAVA


Windows

Compila - JVM Linux


.java .class JRE
file file

Solaris

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Paradigmas da Programação

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO

 Programação Orientada a Objetos


 Abstração
 Propriedades (atributos)
 Funcionalidades (métodos)

Atributos: peso, modelo, Atributos: data inicio, data


tamanho, marca, valor etc entrega, custo total, forma de
pagamento etc
Funcionalidades: martelar,
quebrar etc Funcionalidades: cadastrar
contas, consultar despesas etc

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO

 Programação Orientada a Objetos


 UML – Diagrama de classes – um pouco mais
além

n..1

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
Superclasse
 NA PRÁTICA:
Identificador
class Produto {
private int codigo; Tipo Primitivo de dados
private double preco;
private String descricao;Tipo de dados por referência
Modificador
public Produto (int codigo, double preco, String
descricao){
this.codigo
Construtor = codigo;
por parâmetros
this.preco = preco;
this.descricao = descricao; }

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Continuação...
public int getCodigo(){
return codigo;
}
public double getPreco(){ Métodos de acesso
return preco;
}
public String getDescricao(){
return descricao;
}
}
Prof.: Humberto D. Sousa – Universidade Bandeirante
REVISÃO
Subclasse
 Continuação...
class Livro extends Produto {
private String autor; Herança
private String isbn;
public Livro (int codigo, double preco, String
descricao, String autor, String isbn){
super(codigo, preco, descricao);
this.autor = autor;
this.isbn = isbn;
} Construtor da superclasse

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Continuação...
public String getAutor(){
return autor;
}
public String getISBN(){
return isbn;
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Continuação...
class CompactDisc extends Produto {
private String artista;
private String gravadora;
public CompactDisc (int codigo, double preco,
String descricao, String artista, String gravadora){
super(codigo, preco, descricao);
this.artista = artista;
this.gravadora = gravadora;
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Continuação...
public String getArtista(){
return artista;
}
public String getGravadora(){
return gravadora;
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO Classe pública
 Continuação...
Método principal
public class testeheranca{
public static void main (String args[]){
Livro livro = new Livro(1, 55, "Aprenda Java",
"Braufagélio", "010102");
System.out.println("Código:" + livro.getCodigo());
Instância
System.out.println("Descricao:" + livro.getDescricao());
System.out.println("Preço:" + livro.getPreco());
System.out.println("Autor:" + livro.getAutor());
System.out.println("ISBN:" + livro.getISBN());

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Continuação...
System.out.println();
CompactDisc cd = new CompactDisc(2, 20, "Rock
Nacional", "Um monte", "Brasil Records");
System.out.println("Codigo:" + cd.getCodigo());
System.out.println("Descricao:" + cd.getDescricao());
System.out.println("Preco:" + cd.getPreco());
System.out.println("Artista:" + cd.getArtista());
System.out.println("Gravadora:"+cd.getGravadora());
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


EXERCÍCIO 1.1 - PARA ENTREGA
Crie uma classe de nome Festa para armazenar atributos
privados para a quantidade de convidados, a quantidade
média de salgadinhos que cada convidado irá comer e o
preço unitário de cada salgadinho. Crie métodos set e get
para atributos. Crie um método chamado getTotal que retorna
o valor total gasto na festa com salgadinhos (preço unitário *
quantidade de salgadinhos * convidados). No void main, crie
dois objetos da classe Festa, imprima a quantidade de gastos
total com as festas e a quantidade total de convidados das
duas festas.

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Encapsulamento: permite o controle do nível
de acesso que o objeto pode possuir em
relação aos outros objetos.
NOTAS
Mutator Accessor
Worker
-disciplina:string
Method
Method -nota1:double
Methods
- nota2:double
- falta:integer
+ obterdiscip (in disciplina: string):string
+ alterardiscip(in disciplina :string):string
+lancarfalta(qtde:integer):integer

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Construtores
O que é: um método que não possui tipo de retorno
e recebe o nome da classe que o contém.

Sua função: permitir a passagem de parâmetros


para a instância de um objeto no ato de sua
construção (new).

OBS.: TODA CLASSE JAVA DEVE POSSUIR AO


MENOS UM CONSTRUTOR

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
Herança
COM HERANÇA SUPER CLASSE OU
CLASSE-BASE
Conta
•Nº Conta
•Saldo
•NomedoCliente

ESPECIALIZAÇÃO

Especial Poupança
•Limite •Taxa

SUBCLASSES

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
Herança
COM HERANÇA
Conta
•Nº Conta
•Saldo
•NomedoCliente

Especial Poupança
GENERALIZAÇÃO
•Taxa
•Limite

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 Polimorfismo
É o principio pelo qual, a partir de uma subclasse,
instanciamos objetos utilizando referências de uma
superclasse.
Sem Polimorfismo
Livro livro = new Livro(1, 55, "Aprenda Java",
"Braufagélio", "010102");

Com Polimorfismo
Produto livro = new Livro(1, 55, "Aprenda Java",
"Braufagélio", "010102");

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
class MembroUniversidade {
private String nome;
private String nascimento;
public MembroUniversidade(String nnome, String
nnascimento){
nome = nnome;
nascimento = nnascimento;
}
public MembroUniversidade(){
nome = "";
nascimento = "“; }

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
public void setNome(String nnome){
nome = nnome; }
public String getNome(){
return nome; }
public void setNascimento(String nnascimento){
nascimento = nnascimento; }
public String getNascimento(){
return nascimento; }

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
class Aluno extends MembroUniversidade{
private String rgm;
private String curso;
public Aluno(String no, String na, String r, String c){
super (no,na);
rgm = r;
curso = c; }
public Aluno(){
super();
rgm="";
curso="“; }

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
public void setRgm(String r){
rgm = r; }
public String getRgm(){
return rgm; }
public void setCurso(String c){
curso = c; }
public String getCurso(){
return curso; }
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
class Bolsista extends Aluno{
private float valorbolsa;
public Bolsista(String no, String na, String r, String c, float v){
super(no,na,r,c);
valorbolsa=v;
}
public Bolsista(){
super();
valorbolsa=0;
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
public void setValorBolsa(float v){
valorbolsa=v;
}
public float getValorBolsa(){
return valorbolsa;
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
public class Universidade{
public static void main(String args[]){
MembroUniversidade membcompleto = new
MembroUniversidade("Maria","15/05/1971");
MembroUniversidade membvazio = new
MembroUniversidade();
Aluno alucompleto = new
Aluno("ABC","17/06/1975","32555","TADS");
Aluno aluvazio = new Aluno();

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:
Bolsista bolcompleto = new
Bolsista("Braufagélio","03/06/1976","12978","TTDS",320.00
f);

Bolsista bolvazio = new Bolsista();

System.out.println("Membro da Universidade");
System.out.println(membcompleto.getNome());
System.out.println(membcompleto.getNascimento());

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:

System.out.println();
System.out.println("Aluno");
System.out.println(alucompleto.getNome());
System.out.println(alucompleto.getNascimento());
System.out.println(alucompleto.getRgm());
System.out.println(alucompleto.getCurso());
System.out.println();

Prof.: Humberto D. Sousa – Universidade Bandeirante


REVISÃO
 NA PRÁTICA 2:

System.out.println("Aluno Bolsista");
System.out.println(bolcompleto.getNome());
System.out.println(bolcompleto.getNascimento());
System.out.println(bolcompleto.getRgm());
System.out.println(bolcompleto.getCurso());
System.out.println(bolcompleto.getValorBolsa());
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


EXERCÍCIO 1.2 - PARA ENTREGA
Implemente no exemplo anterior as seguintes classes:

Funcionario Professor
salario regime
dtadmissao titulacao
setSalario (sal) setRegime(reg)
getSalario() getRegime()
setAdmissao(adm) setTitulacao(tit)
getAdmissao() getTitulacao()

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 JFC / SWING

Java Foundation Classes: é um conjunto de


componentes que permitem a criação de interfaces
gráficas. Possui vários pacotes sendo o Swing o
único dos pacotes 100% Java e que portanto
podem ser executados em qualquer SO sem
prejuízos quanto a resoluções, fontes etc.

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Principais componentes do Swing para GUI´s
Jframe: para janelas onde serão depositados
outros controles.
Explo:
import javax.swing.*;
public class Tela extends JFrame {
public Tela(){
super ("Minha primeira tela");
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Principais componentes do Swing para GUI´s
Largura (x) Altura (y)
public void configurar(){
setSize(300,200);
setLocation(800,400);
setVisible(true);}
Left Top
public static void main(String args[]){
new Tela().configurar();
}}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Gerenciadores de Layout
São utilizados para permitir a portabilidade.

Pacote Swing
Componentes de
alto nível
Componentes: JPanel e Componentes: JDialog,
JApplet JWindow e JFrame

java.awt.FlowLayout java.awt.BorderLayout

Gerenciadores de Layout
Padrão (LayoutManager)

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Gerenciadores de Layout
java.awt.FlowLayout: é o gerenciador mais
simples, suas principais características são:
 mantém o tamanho original dos componentes
caso haja algum redimensionamento; e
 pode receber mais de um componente por área;

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
java.awt.FlowLayout
Explo:
import javax.swing.*;
import java.awt.FlowLayout;
public class Tela extends JFrame {
private JButton sim, nao, cancelar;
private JLabel mensagem;
public Tela(){
super("Minha segunda tela");
sim = new JButton("Sim");
nao = new JButton("Nao");
cancelar = new JButton("Cancelar");
mensagem = new JLabel("Mensagem:");
getContentPane().setLayout (new FlowLayout());
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 java.awt.FlowLayout
public void configurar(){
setSize(200,200);
setLocation(300,200);
setVisible(true);
getContentPane().add(mensagem);
getContentPane().add(sim);
getContentPane().add(nao);
getContentPane().add(cancelar);
}
public static void main(String args[]){
new Tela().configurar();
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 java.awt.GridLayout: divide o ambiente em linhas
e colunas como se fosse uma tabela por isso o
tamanho dos objetos se ajustam conforme o
redimensionamento que ocorrer no ambiente.
Explo:

import javax.swing.*;
import java.awt.GridLayout;
public class Tela extends JFrame {
private JButton sim, nao, cancelar;
private JLabel mensagem;
public Tela(){
Prof.: Humberto D. Sousa – Universidade Bandeirante
INTERFACE GRÁFICA
 java.awt.GridLayout:
super("Minha terceira tela");
sim = new JButton("Sim");
nao = new JButton("Nao");
cancelar = new JButton("Cancelar");
mensagem = new JLabel("Mensagem:");
getContentPane().setLayout (new GridLayout(2,2));
}
public void configurar(){
setSize(200,200);
setLocation(300,200);
setVisible(true);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 java.awt.GridLayout:
getContentPane().add(mensagem);
getContentPane().add(sim);
getContentPane().add(nao);
getContentPane().add(cancelar);
}
public static void main(String args[]){
new Tela().configurar();
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 A título de pesquisa ainda existem os tipos:
 java.awt.BorderLayout: o ambiente é dividido

em norte, sul, leste, oeste e centro e os objetos


são redimensionados a medida em o ambiente é
redimensionado.
 java.awt.GridBagLayout: este é o gerenciador
mais flexível e mais complexo, pois com ele
devemos definir para cada objeto as seguintes
informações: posição inicial, posição final,
tamanho, escala, alinhamento e preenchimento.
 Layouts compostos: onde mesclamos vários
gerenciadores em um mesmo ambiente.
Prof.: Humberto D. Sousa – Universidade Bandeirante
INTERFACE GRÁFICA
Layout Composto
Explo:
import javax.swing.*;
import java.awt.*;
public class Tela extends JFrame {
private JButton novo, limpar, salvar, sair;
private JLabel mensagem, relogio;
private JPanel botoes;
private JPanel barraStatus;
private JScrollPane painelTexto;
private JTextArea texto;

O que representa um JPanel?

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
public Tela(){
super("Minha quarta tela");
novo = new JButton("Novo");
limpar = new JButton("Limpar");
salvar = new JButton("Salvar");
sair = new JButton("Sair"); Largura
botoes = new JPanel (new FlowLayout());
relogio = new JLabel(new java.util.Date().toString());
mensagem = new JLabel("Mensagem:");
barraStatus = new JPanel(new FlowLayout());
texto = new JTextArea("Digite seu texto aqui", 20, 40);
painelTexto = new JScrollPane (texto,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, Altura
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
public void configurar(){
setSize(640,480);
setLocation(200,120);
getContentPane().setLayout (new BorderLayout());
botoes.add(limpar);
botoes.add(salvar);
botoes.add(sair);
botoes.add(novo);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
barraStatus.add (mensagem);
barraStatus.add (relogio);
getContentPane().add (botoes, BorderLayout.NORTH);
getContentPane().add (painelTexto, BorderLayout.CENTER);
getContentPane().add (barraStatus, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String args[]){
new Tela().configurar();
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Exercício 2 - Entrega
Monte o código para a preparação da seguinte tela:

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
Layout Composto
Explo 2 – Alterando Propriedades
import javax.swing.*;
import java.awt.*;
import javax.swing.border.*;
public class minhatela5 extends JFrame {
private JButton novo, limpar, salvar, sair;
private JLabel mensagem, relogio;
private JPanel botoes;
private JPanel barraStatus;
private JScrollPane painelTexto;
private JTextArea texto;

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
public minhatela5(){
super("Minha quinta tela");
novo = new JButton("Novo");
limpar = new JButton("Limpar");
salvar = new JButton("Salvar");
sair = new JButton("Sair");
botoes = new JPanel (new FlowLayout());

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
relogio = new JLabel(new java.util.Date().toString());
mensagem = new JLabel("Mensagem:");
barraStatus = new JPanel(new FlowLayout());

texto = new JTextArea("Digite seu texto aqui", 20, 40);


painelTexto = new JScrollPane (texto,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
public void configura(){
setForeground(Color.black);
setBackground(new Color(192,192,192));
setSize(640,480);
setLocation(200,120);
getContentPane().setLayout (new BorderLayout());
Border borda = new LineBorder(Color.RED, 2);
barraStatus.setBorder(borda);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
Font arialBold = new Font("Arial", Font.BOLD, 12);
mensagem.setFont(arialBold);
relogio.setFont(arialBold);
Font arialGrande = new Font("Arial", Font.PLAIN, 18);
texto.setFont(arialGrande);
novo.setToolTipText("Cria um novo arquivo");
sair.setToolTipText("Sai do Projeto");
salvar.setToolTipText("Salva o arquivo");
limpar.setToolTipText("Esvazia o texto");

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Layout Composto
botoes.add(limpar);
botoes.add(salvar);
botoes.add(sair);
botoes.add(novo);
barraStatus.add (mensagem);
barraStatus.add (relogio);
getContentPane().add (botoes, BorderLayout.NORTH);
getContentPane().add (painelTexto, BorderLayout.CENTER);
getContentPane().add (barraStatus, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String args[]){
new minhatela5().configura();
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Entrada de dados através do ambiente

 javax.swing.JTextField: texto em uma linha sem


formatação;
 javax.swing.JTextArea: texto com múltiplas linhas sem
formatação;
 javax.swing.JPasswordField: texto em uma linha e
específico para senhas; e
 javax.swing.JFormattedTextField: texto em uma linha
com formatação.

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com GridBagLayout

import javax.swing.*;
import java.awt.*;
public class Teste extends JFrame {
public Teste(){
super("Utilizando GridBag");
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
this.setSize(600,600); }
public static void main(String args[]){
Teste janela = new Teste();
janela.show(); } }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com GridBagLayout

public class Teste extends


O que JFrame
acontecerá { adicionarmos
caso
public Teste(){mais componentes até o limite horizontal
do container?
super("Utilizando GridBag");
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cont.add(new JLabel("Nome:"), cons);
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(600,600); }
public static void main(String args[]){
Teste janela = new Teste();
janela.show(); } }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints
EE se
se posicionarmos
posicionarmos aa
Altere o nosso construtor para:
utilizarmos
constraintaentre
constraint
os
public Teste(){ “cons.ipady=100;”?
métodos “add”?
super("Utilizando GridBag");
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.ipadx=80;

cont.add(new JLabel("Nome:"), cons);


cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(600,600);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints

Altere o nosso construtor para:


E se posicionarmos a definição
public Teste(){ da constraint ‘insets” entre as
linhas add?
super("Utilizando GridBag");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.insets = new Insets(75,10,10,10);
cont.add(new JLabel("Nome:"), cons);
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(300,300);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints

Altere o nosso construtor para:


public Teste(){ Vamos inverter os valores
super("Utilizando GridBag");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.weightx=1;
cont.add(new JLabel("Nome:"), cons);
E se zerarmos os dois valores?
cons.weightx=0;
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(300,300); }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints

Altere o nosso construtor para:


public Teste(){
super("Utilizando GridBag");
Alteramos
E para subirmosa constraint
os objetos ao
Por
this.setDefaultCloseOperation(EXIT_ON_CLOSE); quê?
“anchor” para
topo da North...
célula?
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.weightx=1;
cons.anchor=GridBagConstraints.WEST;
cont.add(new JLabel("Nome:"), cons);
cons.weightx=0;
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(300,300); }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints

Altere o nosso construtor para:


super("Utilizando GridBag");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.weightx=1;
cons.weighty=1;
cons.anchor=GridBagConstraints.NORTH; Alteramos
E para ficar
“anchor” para
cont.add(new JLabel("Nome:"), cons); assim?
NORTHWEST...
cons.weightx=0;
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(300,300);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints
Altere o nosso construtor para:
super("Utilizando GridBag");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.weightx=1;
cons.weighty=1;
cons.anchor=GridBagConstraints.NORTHWEST;
Alteramos “fill”
cons.fill = GridBagConstraints.BOTH; E para ficar
para
assim?
cont.add(new JLabel("Nome:"), cons); HORIZONTAL.
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(300,300);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints
Altere o nosso construtor para:
super("Utilizando GridBag");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.weightx=0.01;
cons.weighty=1;
cons.anchor=GridBagConstraints.NORTHWEST;
cons.fill = GridBagConstraints.HORIZONTAL;
cont.add(new JLabel("Nome:"), cons);
cons.weightx=0.5;
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(300,300);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Alterando as constraints
Altere o nosso construtor para:
super("Utilizando GridBag");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());
cons.weightx=0.05;
cons.fill = GridBagConstraints.HORIZONTAL;
cons.gridx=0;
cons.gridy=0;
cont.add(new JLabel("Nome:"), cons);
cons.gridy=1;
cont.add(new JTextField("Digite o nome do cliente"), cons);
this.setSize(300,300);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com FlowLayout

import javax.swing.*;
import java.awt.*;
import java.text.*;

public class entradadedados extends JPanel{


private JLabel lblNome, lblEmail, lblNascimento,
lblFone, lblEndereco;
private JTextField txtNome, txtEmail, txtFone;
private JTextArea txtEndereco;
private JFormattedTextField txtNascimento;
private Format validaData;
public entradadedados(){

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados
lblNome = new JLabel("Nome");
lblEmail = new JLabel("Email");
lblNascimento = new JLabel("Nascimento");
lblFone = new JLabel("Fone");
lblEndereco = new JLabel("Endereço");
txtNome = new JTextField(40);
txtEmail = new JTextField(35);
txtFone = new JTextField(15);
txtEndereco = new JTextArea("",3,35);
validaData = new SimpleDateFormat("dd/MM/yyyy");
txtNascimento = new JFormattedTextField(validaData);
txtNascimento.setColumns(20);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados

public void configura(){


setLayout (new GridLayout(5,1));
FlowLayout esquerda = new FlowLayout(FlowLayout.LEFT);
JPanel auxNome =new JPanel(esquerda);
auxNome.add(lblNome);
auxNome.add(txtNome);
JPanel auxNascimento =new JPanel(esquerda);
auxNascimento.add(lblNascimento);
auxNascimento.add(txtNascimento);
JPanel auxEmail =new JPanel(esquerda);
auxEmail.add(lblEmail);
auxEmail.add(txtEmail);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados

JPanel auxFone =new JPanel(esquerda);


auxFone.add(lblFone);
auxFone.add(txtFone);
// o JTextArea sempre deve estar em um JScrollPane
JScrollPane scrollEndereco = new JScrollPane(txtEndereco,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScroll
Pane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados

JPanel auxEndereco = new JPanel(esquerda);


auxEndereco.add (lblEndereco);
auxEndereco.add (scrollEndereco);
add(auxNome);
add(auxNascimento);
add(auxFone);
add(auxEmail);
add(auxEndereco);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados

public static void main (String args[]){


entradadedados tela = new entradadedados();
tela.configura();
JFrame frame = new JFrame(“Flow Layout");
frame.getContentPane().add(tela);
frame.pack();
frame.setVisible(true);
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com GridBagLayout

import javax.swing.*;
import java.awt.*;
import java.text.*;
public class Teste extends JFrame {
public Teste(){
super("Utilizando GridBag");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cont = this.getContentPane();
GridBagConstraints cons = new GridBagConstraints();
cont.setLayout(new GridBagLayout());

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com GridBagLayout

cons.gridx=0;
cons.gridy=0;
cons.insets = new Insets(-350,-430,1,1);
cont.add(new JLabel("Nome:"), cons);

cons.gridy=1;
cons.insets = new Insets(-300,-20,1,1);
cont.add(new JTextField("",40), cons);

cons.gridy=2;
cons.insets = new Insets(-250,-395,1,1);
cont.add(new JLabel("Nascimento:"), cons);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com GridBagLayout

cons.gridy=3;
cons.ipadx = 200;
cons.insets = new Insets(-200,-260,1,1);
cont.add(new JFormattedTextField(new
SimpleDateFormat("dd/MM/yyyy")), cons);
cons.ipadx = 0;
cons.gridy=4;
cons.insets = new Insets(-150,-430,1,1);
cont.add(new JLabel("Fone:"), cons);
cons.gridy=5;
cons.insets = new Insets(-100,-240,1,1);
cont.add(new JTextField("",20), cons);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com GridBagLayout

cons.gridy=6;
cons.insets = new Insets(-50,-430,1,1);
cont.add(new JLabel("Email:"), cons);

cons.gridy=7;
cons.insets = new Insets(-10,-20,1,1);
cont.add(new JTextField("",40), cons);

cons.gridy=8;
cons.insets = new Insets(10,-410,1,1);
cont.add(new JLabel("Endereço:"), cons);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Entrada de dados com GridBagLayout

cons.gridy=9;
JTextArea txtEndereco;
txtEndereco = new JTextArea("",3,40);
cons.insets = new Insets(5,-25,1,1);
cont.add(new JScrollPane(txtEndereco,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HO
RIZONTAL_SCROLLBAR_AS_NEEDED), cons);
this.setSize(500,500);
}
public static void main(String args[]){
Teste janela = new Teste();
janela.show(); } }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Exercício prático

Monte a interface abaixo utilizando o GridBagConstraint.

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Maximizando produção de interfaces

import java.awt.*;
import javax.swing.*;
import java.text.*;
public class Teste extends JFrame {
public Teste() {
super("Maximizando a produção");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.getContentPane().setLayout(new GridBagLayout());

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Maximizando produção de interfaces

adicionarComposto("Nome", new JTextField(), "Nascimento", new


JFormattedTextField(new SimpleDateFormat("dd/MM/yyyy")));
adicionarSimples("Fone", new JTextField());
adicionarSimples("Email", new JTextField());
JTextArea txtEndereco;
adicionarAreaTexto("Endereço", new JScrollPane(txtEndereco= new
JTextArea(""),
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HO
RIZONTAL_SCROLLBAR_AS_NEEDED));
this.setSize(600,600);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Maximizando produção de interfaces

public void adicionarSimples(String label, JComponent componente) {


GridBagConstraints cons = new GridBagConstraints();
cons.fill = GridBagConstraints.NONE;
cons.anchor = GridBagConstraints.NORTHWEST;
cons.insets = new Insets(4,4,4,4);
cons.weightx = 0;
cons.gridwidth = 1;
this.getContentPane().add(new JLabel(label), cons);
cons.fill = GridBagConstraints.BOTH;
cons.weightx = 1;
cons.gridwidth = 0;
this.getContentPane().add(componente, cons); }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Maximizando produção de interfaces

public void adicionarComposto(String label, JComponent componente,


String label2, JComponent componente2) {
GridBagConstraints cons = new GridBagConstraints();
cons.fill = GridBagConstraints.NONE;
cons.anchor = GridBagConstraints.NORTHWEST;
cons.insets = new Insets(4,4,4,4);
cons.weightx = 0;
cons.gridwidth = 1;
this.getContentPane().add(new JLabel(label), cons);
cons.weightx = 1;
cons.fill = GridBagConstraints.BOTH;
this.getContentPane().add(componente, cons);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Maximizando produção de interfaces

cons.fill = GridBagConstraints.NONE;
cons.weightx = 0;
this.getContentPane().add(new JLabel(label2), cons);
cons.weightx = 1;
cons.gridwidth = 0;
cons.fill = GridBagConstraints.BOTH;
this.getContentPane().add(componente2, cons);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Maximizando produção de interfaces
public void adicionarAreaTexto(String label, JScrollPane componente ) {
GridBagConstraints cons = new GridBagConstraints();
cons.fill = GridBagConstraints.NONE;
cons.anchor = GridBagConstraints.NORTHWEST;
cons.insets = new Insets(4,4,4,4);
cons.weighty = 1;
cons.weightx = 0;
cons.gridwidth = 1;
this.getContentPane().add(new JLabel(label), cons);
cons.fill = GridBagConstraints.BOTH;
cons.weightx = 1;
cons.gridwidth = 0;
this.getContentPane().add(componente, cons); }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Maximizando produção de interfaces

public static void main(String[] args ) {


Teste exe = new Teste();
exe.show();
}
}

Adicione novos componentes!!!

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Criando Menus

Para desenvolver o trabalho com menus devemos


utilizar três classes:

 JMenuBar
 JMenu
 JMenuItem

Todas estas classes fazem parte dos componentes


da API do SWING.

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo - Menu
No projeto anterior, dentro do Construtor, abaixo da linha
onde definimos o layout GridBagLayout adicione as linhas:
JMenuBar menuBar;
JMenu cliente, ajuda;
JMenuItem gravar, consultar, limpar, sair;
JMenuItem conteudoajuda, sobre;
cliente = new JMenu("Cliente");
ajuda = new JMenu("Ajuda");
gravar = new JMenuItem("Gravar");
consultar = new JMenuItem("Consultar");
limpar = new JMenuItem("Limpar");
sair = new JMenuItem("Sair");
conteudoajuda = new JMenuItem("Conteúdo da Ajuda");
sobre = new JMenuItem("Sobre");

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo - Menu
cliente.add (gravar);
cliente.add (consultar);
cliente.add (limpar);
cliente.addSeparator();
cliente.add (sair);
ajuda.add (conteudoajuda);
ajuda.add (sobre);
menuBar = new JMenuBar();
menuBar.add (cliente);
menuBar.add (ajuda);
EEsese
Não
adicionarmos
adicionarmos
devemos adicionar
umummenuItem
menu
o menu
dentro
dentro
nadede
setJMenuBar(menuBar); JMenuBar.
outro?
outro?
Por quê?
Ex.:
Ex.:
//menuBar.add
gravar.add
cliente.add
(consultar);
(ajuda);
(ajuda);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Uma dica...
No construtor adicione:
Abaixo da linha:
adicionarAreaTexto("Endereço", new JScrollPane.....;

Adicione:
txtEndereco.setToolTipText("Neste componente pode digitar
mais de uma linha!");

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Utilizando listas. tabelas e combos

Para trabalhar com estes componentes dentro da


API do SWING, utilizaremos as seguintes
orientações:

 Para Lista
 javax.swing.JList – controlador;
 javax.swing.ListModel – modelo;

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Utilizando Lista
Vamos criar um novo método:
public void adicionarList(String label) {
JList lstEstados;
DefaultListModel modEstados;
modEstados = new DefaultListModel();
lstEstados = new JList (modEstados);
modEstados.addElement (new String ("São Paulo"));
modEstados.addElement (new String ("Rio de Janeiro"));
modEstados.addElement (new String ("Minas Gerais"));
modEstados.addElement (new String ("Espírito Santo"));

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Utilizando Lista

GridBagConstraints cons = new GridBagConstraints();


cons.fill = GridBagConstraints.NONE;
cons.anchor = GridBagConstraints.NORTHWEST;
cons.insets = new Insets(4,4,4,4);
cons.weighty = 1;
cons.weightx = 0;
cons.gridwidth = 1;
this.getContentPane().add(new JLabel(label), cons);
Adicione umaAltere a linha:
referência no construtor:
cons.fill = GridBagConstraints.HORIZONTAL;
adicionarList("Estado");
//cons.gridwidth=GridBagConstraints.REMAINDER
cons.weightx = 1;
cons.gridwidth = GridBagConstraints.REMAINDER;
this.getContentPane().add(lstEstados, cons); }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Utilizando combos

 Para Combo
 javax.swing.JComboBox – controlador;
 javax.swing.ComboBoxModel – modelo.

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Utilizando Combo
Vamos alterar o método anterior para:

public void adicionarCombo(String label) {


JComboBox cmbEstados;
DefaultComboBoxModel modEstados;
modEstados = new DefaultComboBoxModel();
cmbEstados = new JComboBox (modEstados);
modEstados.addElement (new String ("São Paulo"));
modEstados.addElement (new String ("Rio de Janeiro"));
modEstados.addElement (new String ("Minas Gerais"));
modEstados.addElement (new String ("Espírito Santo"));
GridBagConstraints cons = new GridBagConstraints();

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Utilizando Combo
cons.fill = GridBagConstraints.NONE;
cons.anchor = GridBagConstraints.NORTHWEST;
cons.insets = new Insets(4,4,4,4);
cons.weighty = 1;
cons.weightx = 0;
cons.gridwidth = 1;
this.getContentPane().add(new JLabel(label), cons);
cons.fill = GridBagConstraints.HORIZONTAL;
cons.weightx = 1;
cons.gridwidth =Cite as duas
-Utilização
principais
de diferenças
espaço e entre os
GridBagConstraints.REMAINDER;
“cmbEstados.setEditable(true);”.
-componentes ComboBox e List?
this.getContentPane().add(cmbEstados, cons);
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Utilizando tabelas

 Para Tabela
 javax.swing.JTable – controlador;
 javax.swing.TableModel – modelo.

Devemos importar a classe:

import javax.swing.table.*;

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Utilizando tabelas
Vamos criar um novo método:

public void adicionarTabela(String label) {


JTable tabEstados;
DefaultTableModel modEstados;
modEstados = new DefaultTableModel(1,2);
tabEstados = new JTable (modEstados);
String[] linha0 = {"Estado", "Capital"};
String[] linha1 = {"SP", "São Paulo"};
String[] linha2 = {"RJ", "Rio de Janeiro"};
modEstados.insertRow(0, linha0);
modEstados.insertRow(1, linha1);
modEstados.insertRow(2, linha2);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Explo – Utilizando tabelas
GridBagConstraints cons = new GridBagConstraints();
cons.fill = GridBagConstraints.NONE;
cons.anchor = GridBagConstraints.NORTHWEST;
cons.insets = new Insets(4,4,4,4);
cons.weighty = 1;
cons.weightx = 0;
cons.gridwidth = 1;
this.getContentPane().add(new JLabel(label), cons);
cons.fill = GridBagConstraints.HORIZONTAL;
cons.weightx = 1; Remova a referência do ComboBox e
adicione a referência do Table
cons.gridwidth = GridBagConstraints.REMAINDER;
this.getContentPane().add(tabEstados, cons); }

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Dicas...
Para excluir uma linha da tabela?

modEstados.removeRow(2);

Para alterar o valor de uma célula?

tabEstados.setValueAt("ES", 3, 0);
tabEstados.setValueAt("Vitória", 3, 1);
tabEstados.getColumnModel().getColumn(1).
E para alterarmos a largura da coluna?
setPreferredWidth(150);

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Dicas...
JComboBox cmbEstados;
DefaultComboBoxModel modcmbEstados;
modcmbEstados = new DefaultComboBoxModel();
cmbEstados = new JComboBox (modcmbEstados);
modcmbEstados.addElement (new String ("São Paulo"));
modcmbEstados.addElement (new String ("Rio de Janeiro"));
modcmbEstados.addElement (new String ("Vitória"));

O que vamos fazer com este combo?


tabEstados.setBackground(new Color(54, 107, 129));
Podemos também alterar as cores...
tabEstados.getColumn(tabEstados.getColumnName(1)).setCellEditor(
tabEstados.setForeground(new Color(250,120,120));
new DefaultCellEditor(cmbEstados));

Prof.: Humberto D. Sousa – Universidade Bandeirante


INTERFACE GRÁFICA
 Dicas...
cliente.setMnemonic('C');
ajuda.setMnemonic('A');
setJMenuBar(menuBar);
gravar.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,
InputEvent.CTRL_MASK));

.. Atribua outras teclas para as outras opções!!!

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 EVENTOS

Os eventos são objetos obtidos através de uma


classe. Através dos mesmos é que garantimos a
integração entre usuário e os componentes da tela
que aprendemos a manipular até este momento.

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 EVENTOS
Modelo de delegação
Este é o modelo responsável pela criação dos
eventos, utilizado desde a versão JDK 1.1 .Este
modelo é composto basicamente por três etapas:
1º) Criar uma classe para tratar o evento, chamada
de Listener, deve implementar a interface:
java.awt.EventLIstener
2º) Registrar um evento ao Listener, da seguinte
forma:
add<evento>LIstener
Prof.: Humberto D. Sousa – Universidade Bandeirante
EVENTOS PARA INTERFACE GRÁFICA
 EVENTOS
Modelo de delegação
3º) Esta etapa ocorre internamente quando a JVM
cria o objeto do evento desejado e associa ao
listener designado para o seu tratamento. As
classes dos eventos podem ser divididas:
 javax.awt.event – contém os eventos genéricos; e
 javax.swing.event – contém os eventos específicos de

alguns componentes do SWING.

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Função do Listener:
 Com o Listener o Java “escuta” os eventos.

 Sem o Listener o Java iria “ler” os periféricos.

Com o Listener possuimos 2 tipos de eventos:

1º-) Baixo Nível: container (adição e remoção de


componentes), foco, entrada de dados e janela
(fechar, maximizar, minimizar e etc)
2º-) Semânticos: ação (clique por exemplo), ajuste
(scrollbar), item (combo) e alteração de texto.
Prof.: Humberto D. Sousa – Universidade Bandeirante
EVENTOS PARA INTERFACE GRÁFICA
 Mais sobre Listener:
São implementados através de interface:
Interface para eventos do mouse - MouseListener:
 mouseClicked(MouseEvent e)

 mousePressed(MouseEvent e)

 mouseReleased(MouseEvent e)

 mouseEntered(MouseEvent e)

 mouseExited(MouseEvent e)

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Vamos implementar um evento no projeto:
 1º-) vamos implementar os eventos de ação na
classe pública:
Era:
public class Teste extends JFrame {

Altere para:
public class Teste extends JFrame implements
ActionListener {

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Vamos implementar um evento no projeto:
 2º-) No construtor ANTES da linha:

this.setSize(600,600); }

Adicione:

sair.addActionListener(this);

Assim adicionamos o evento no componente.

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Vamos implementar um evento no projeto:
 3º-) Todo Listener possui métodos obrigatórios
que devem ser declarados, no caso do
ActionLIstener devemos declarar:

public void actionPerformed(ActionEvent e){


System.exit(0);
}

APÓS O FINAL DO CONSTRUTOR

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Dica....
 O mesmo Listener pode ser utilizado por mais
de um componente. Por exemplo, procure no
construtor a linha:

sair.addActionListener(this);

E para identificar a origem do


Abaixo dela digite:
evento???

sobre.addActionListener(this);

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Dica...
 Alteramos o método “actionPerformed” para:

public void actionPerformed(ActionEvent e){


if (e.getSource() == sair) {
System.exit(0);}
else{
txtEndereco.setText("Clicou na opção sobre");}
}
E....

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Dica...
O componente txtEndereco foi declarado dentro do
construtor por isso não é reconhecido dentro do
método, portanto,
Mudamos vamos mover ados
a declaração sua declaração
para a classe pública, após
componentes a linha:
de menu para a
classe pública, retirando do
construtor
public class Teste(como
extendsfizemos comimplements
JFrame
ActionListenertxtEndereco)!
{
Cole a linha:

JTextArea txtEndereco;

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Dica 2... A classe “Adapter”

A classe Adapter nos permite declarar apenas os


métodos que iremos utilizar. No lugar de:

ComponentListener => ComponentAdapter


ContainerListener => ContainerAdapter
Por que o ActionListener não
FocusListener => lista?
está nesta FocusAdapter
KeyListener => KeyAdapter
MouseListener => MouseAdapter
WindowListener => WindowAdapter

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Vamos a um exemplo com Adapter, dentro do
nosso projeto, acima do Public class digite:
class meumouse extends MouseAdapter{
int i;
public void mousePressed(MouseEvent evento){
i = i +1;
javax.swing.JOptionPane.showMessageDialog
(null, i);
}
}

Prof.: Humberto D. Sousa – Universidade Bandeirante


EVENTOS PARA INTERFACE GRÁFICA
 Dentro do construtor antes da linha:

this.setSize(600,600);

Digite:

meumouse cliques = new meumouse();


txtEndereco.addMouseListener(cliques);

Prof.: Humberto D. Sousa – Universidade Bandeirante


Java com Banco de Dados
 Instalar o JDBC:
http://www.mysql.com/downloads/connector/j/

 Adicionar o driver no projeto:


 Menu: File / Import
 General / ArchiveFile / Next

 Browse e localize o arquivo:

mysql-connector-java-5.1.22-bin
Dentro da pasta criada após a descompactação do
arquivo baixado.
 Into Folder / Browser (escolha uma pasta) / OK /

Finish

Prof.: Humberto D. Sousa – Universidade Bandeirante


Java com Banco de Dados
 MVC – Model View Controller

O processo funcionará assim:


1. O usuário clica em um botão na interface (View). Esse
botão possui um evento que faz uma chamada ao
Controller;
2. O Controller atende essa chamada e então se comunica
com o Model;
3. O Model executa, por exemplo, um acesso ao banco de
dados, como uma consulta, e então retorna uma resposta
ao Controller que retorna uma resposta a View;

Prof.: Humberto D. Sousa – Universidade Bandeirante

Você também pode gostar