JAVA
PROGRAMAÇÃO DE SISTEMAS
CORPORATIVOS
APRESENTAÇÃO
Professor: Humberto Delgado de Sousa
E-mail:
[email protected] 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