Download - Curso de Linguagem Java 2010 - Marcos Mendes
![Page 1: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/1.jpg)
1
Curso de Linguagem Java
Marcos Mendes
2010
![Page 2: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/2.jpg)
2
Principais Objetivos do Curso
Utilização de ferramentas de desenvolvi-mento gratuitas e/ou livres.
Parte IFamiliaridade com as estruturas de programação e criação de interfaces gráficas com o usuário.
Parte IIUso das principais estruturas de dados. Construção de uma aplicação de banco de dados
na Web.
![Page 3: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/3.jpg)
3
Bibliografia de Referência Core Java 2
Volume 1 – Fundamentos Volume 2 – Recursos Avançados Cay S. Horstmann & Gary Cornell Editora Makron Books - Sun microsystems
Aprenda Programação Orientada a Objetos em 21 dias
Anthony Sintes Editora Makron Books
JDBC e Java - Programação para banco de dados George Reese Editora Berkeley – O´Reilly
Java - Servlet: Programação Jason Hunter & William Crawford Editora Ciência Moderna – O´Reilly
Certificação Sun para Programadores e Desenvolvedores Kathy Sierra & Bert Bates Editora AltaBooks - Osborne
![Page 4: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/4.jpg)
4
Bibliografia de Referência Desenvolvendo Sites de e-Commerce
Como Criar um Eficaz e Lucrativo Site de e-Commerce Passo a Passo
Vivek Sharma & Rajiv Sharma Editora Makron Books
Desenvolvendo na Web com JavaServer Pages Duane K. Fields & Mark A. Kolb Editora Ciência Moderna – Manning
Java - Guia de Consulta Rápida Fábio Ramon Editora Novatec
JDBC 2 - Guia de Consulta Rápida Acesso a banco de dados usando a linguagem Java – Guia
de Consulta Rápida Fábio Ramon Editora Novatec
![Page 5: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/5.jpg)
5
Bibliografia Complementar Java Use a Cabeça
Kathy Sierra e Bert Bates Editora Alta Books
Java Como Programar Deitel Editora Pearson / Prentice Hall
Simplesmente Java Michael Wenstrom Editora Alta Books
Big Java Cay Horstmann Editora Bookman
Tudo Sobre a JSP: com o NetBeans em Aplicações Distribuídas
Fernando Anselmo Visual Books
![Page 6: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/6.jpg)
6
Sites para Consulta http://java.net www.java.sun.com www.soujava.org.br www.guj.com.br www.sobresites.com.br/java www.j2eebrasil.com.br www.portaljava.com.br www.javafree.com.br www.javasoft.com.br www.mundooo.com.br www.caelum.com.br www.globalcode.com.br www.argonavis.com.br www.tarcisiolopes.com.br www.javaman.com.br www.rsjug.org/html-2004/artigos/robocode.pdf http://uniclick.unisul.br/robocode
![Page 7: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/7.jpg)
7
Tópicos Abordados no Curso Introdução à Linguagem Java
Histórico Utilização Características Ambiente de Desenvolvimento Estruturas de Programação
Programação Orientada a Objetos Nomenclatura Propriedades Construção de classes
Interface Gráfica (AWT, Swing) Contâineres Componentes Gerenciamento de Layout Manipulação de Eventos
![Page 8: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/8.jpg)
8
Tópicos Abordados no Curso Applets (mini-aplicações cliente)
Conceitos Métodos Particulares Construção e Acesso
Conectividade de Banco de Dados (JDBC) Conceito da Arquitetura JDBC Etapas da Programação JDBC Manutenção de Tabelas de Banco de Dados
Servlets / JSP (aplicações servidor) Servidores HTTP Formato de um Servlet. Gravação de dados de um formulário HTML em um
Banco de Dados Remoto. Exibição de dados de um Banco de Dados em uma
página HTML.
![Page 9: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/9.jpg)
9
Histórico da Linguagem 1991 – Início do Projeto Green
Linguagem Oak criada por James Gosling, Mike Sheridan e Patrick Naughton. Inspirada na UCSD Pascal de Niklaus Wirth, porém, baseada em C++ (Unix)
1994 – HotJava Gosling desenvolve o navegador Webrunner depois
chamado de HotJava para demonstrar o uso de Java no desenvolvimento de aplicativos para redes.
O compilador Java, originalmente escrito em C, é reescrito em Java.
1995 – Início da Era Java Lançamento oficial da Linguagem Java, kit JDK 1.0
alpha. Netscape com suporte à Java
![Page 10: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/10.jpg)
10
Histórico da Linguagem 1996 – Lançamento do kit JDK 1.0
JVM para MacOS. Primeiro JavaOne
1997 – Lançamento da versão 1.1 Conectividade de bancos de dados, servlets e
objetos distribuídos. Novo modelo de eventos, internacionalização,
modelo de componentes JavaBeans) JDK 1.1.3 para Linux. JavaCard
1998 – Lançamento do Java2 JDK 1.2 - JFC Swing e segurança. Formalização do JCP – Java Community Process. API Java 3D.
![Page 11: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/11.jpg)
11
Histórico da Linguagem 1999 – Edições da plataforma: J2SE, J2EE e
J2ME Lançamento de JSP – Java Server Pages. Apache Jakarta. Tecnologia JavaCard adotada como padrão mundial.
2000 – J2SE 1.3 400 grupos de usuários no mundo. JavaOne com mais de 25.000 desenvolvedores. NetBeans Open-Source
2001 – IDE Eclipse J2ME para Linux. Catálogo J2EE Patterns. Lançamento do SDK J2EE 1.3
![Page 12: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/12.jpg)
12
Histórico da Linguagem 2002 – Lançamento do JDK J2SE 1.4
Web Services Developers Pack 1.0 Java 3D API 1.3 MIDP 2.0 API Java Server Faces Mais de 50 milhões de celulares J2ME
2003 – java.net 500 grupos de usuários Java no mundo. Anúncio do protótipo do robô de exploração enviado
à Marte. J2ME Mobile 3D Graphics API. J2EE 1.4
2004 – J2SE 1.5 (Tiger) Mais de 250 milhões de telefones móveis. Projeto Looking Glass
![Page 13: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/13.jpg)
13
Edições Java Java Standard Edition (JavaSE)
API´s padrão, base da linguagem Java.
Aplicações Desktop.
Java Micro Edition (JavaME)
API´s para aplicações em micro-dispositivos (pda, celulares, pagers,...)
Java Enterprise Edition (JavaEE)
Destinada à aplicações corporativas distribuídas e de arquitetura multicamadas.
![Page 14: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/14.jpg)
14
Plataforma Java 2 Standard Edition
![Page 15: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/15.jpg)
15
Alguns motivos para você usar Java Em 2003 foi eleita pelo quarto ano consecutivo como a
linguagem do ano pela revista Info Exame. A tecnologia Java está em 100% das empresas Fortune
500; 78% dos executivos vêem Java como a melhor plataforma
para web services (fonte: Giga, Computerworld); Java está instalada e rodando em quase 500 milhões de
computadores desktop; Mais de 300 milhões de smart cards seguros baseados em
Java já foram distribuídos; sem contar os quase 1 bilhão de SIMM cards para telefonia celular.
Quase 74% de profissionais usam Java como sua principal linguagem de desenvolvimento, ultrapassando os 51% que usam Visual Basic (fonte: IDC).
![Page 16: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/16.jpg)
16
Características da Linguagem PortabilidadePortabilidade
O código binário das aplicações Java (byte codes) podem ser executados em várias plataformas sem nenhuma alteração.
Uso GeralUso GeralAplicações que vão desde smart-cards até mainframes.
Linguagem Distribuída (RMI, EJB)Java possui api´s para a criação de objetos distribuídos onde partes de uma única aplicação podem estar sendo executada em várias máquinas transparentemente.
Segurança (SandBox – Caixa de Areia)Controle de segurança do ambiente de execução das aplicações.
![Page 17: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/17.jpg)
17
Características da Linguagem Multithreading
Suporta a programação de aplicações multi-tarefa compostas por várias linhas de execução (threads).
Linguagem Dinâmica (JCP)Linguagem Dinâmica (JCP)A linguagem Java está em constante evolução, suas extensões e sua evolução não são controladas por uma única empresa, ou por seu criador, mas sim pela comunidade.
Java e a Internet (Applets, Servlets / JSP / JSF)Total suporte para criação de aplicações em rede especialmente para Web.
Orientação a ObjetosSegue o paradigma de orientação a objetos.
![Page 18: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/18.jpg)
18
Java Community Process - JCP Processo estabelecido pela Sun, responsável
pela evolução da tecnologia Java. Composto por empresas, universidades, membros individuais e público em geral (www.jcp.orgwww.jcp.org).
![Page 19: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/19.jpg)
19
Java Specification Request - JSR JSR 1 – Real-Time Specification for Java
ObjetivoA especificação Real-Time para Java amplia a plataforma Java para suportar a programação de avançados sistemas de aplicações em tempo real.
Specification LeadDoug Locke – TimeSys Corporation.
Expert GroupAjile Systems, Apogee Software, Belliardi, Brosgol, Cyberonix, Mitre Corporation, Motorola, NSI Com, Nortel Networks, QNX, Rockwell Collins, Sun Microsystems, Thales Group, TimeSys Corporation, WindRiver Systems.
![Page 20: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/20.jpg)
20
Ambiente de Desenvolvimento
Ambiente Open Source Sistema Operacional
Linux
Servidores Web Apache (http://apache.org)
Tomcat (http://jakarta.apache.org/tomcat)
Jboss (www.jboss.org)
Ferramentas de Desenvolvimento (IDE) eclipse (www.eclipse.org)
NetBeans (www.netbeans.org)
![Page 21: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/21.jpg)
21
Ambiente de Desenvolvimento
Ferramenta de Build Ant (http://ant.apache.org)
Controle de Versionamento CVS (www.cvshome.org)
Testes Automatizados Junit (http://junit.org)
Ferramenta de Log Log4J (http://jakarta.apache.org/log4j)
Controle de Alterações Bugzilla (http://bugzilla.org)
![Page 22: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/22.jpg)
22
Ambiente de Desenvolvimento
Gerenciadores de Bancos de Dados MySQL
www.mysql.com Postgrees
www.postgresql.org HSQLDB
www.hsqldb.org Firebird
www.firebirdsql.org
![Page 23: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/23.jpg)
23
Ambiente de Desenvolvimento Utilizando um ambiente Microsoft
Win XP pro = R$ 1.000,00 Win XP home = R$ 670,00 SQL Server = R$ 1.900,00 Visual Studio .Net = R$ 4.260,00
Total em torno de R$ 7.100,00Total em torno de R$ 7.100,00
(valores consultados no 1º sem. de 2004)(valores consultados no 1º sem. de 2004)
![Page 24: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/24.jpg)
24
Ambiente de Desenvolvimento
Ferramentas de Programação JBuilder (Borland), Visual J++ (Microsoft),
JDeveloper (Oracle), WebSphere (IBM), SunOne
Studio (Sun), NetBeans (free), Eclipse (free),
etc.
Aquisição e instalação do J2SDK (Java 2
Software Development Kit) Através do site www.java.sun.comwww.java.sun.com, revistas
de CDRom, livros, etc.
O JSDK é um software de livre distribuição.
![Page 25: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/25.jpg)
25
Ambiente de Desenvolvimento Exemplo para instalação do J2SDK versão 1.4.2
para Windows (98/ME) na unidade <c:> Clique duas vezes no arquivo
j2sdk-1_4_2-windows-i586.exe. Efetue a instalação com os parâmetros padrão Edite o arquivo c:\autoexec.bat
Inclua as seguintes linhas no final do arquivo:set JAVA_HOME=c:\j2sdk1.4.2set PATH=%JAVA_HOME%\bin;%PATH%set CLASSPATH=.
Reinicie o computador
É aconselhavel baixar os tutoriais de instalação nos
sites referidos anteriormente no tópico Sites para
Consulta.
![Page 26: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/26.jpg)
26
Ambiente de Desenvolvimento Edição dos programas fontes
Editores de texto (ascii).
Compilação Compilador javacjavac executado
no prompt do DOS.
Execução Interpretador java java também
executado no prompt do DOS. Applets executadas em
browsers.
CódigoFonte(.java)
ByteCode(.class)
Compilação
![Page 27: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/27.jpg)
27
Estruturas de Programação Formato geral de um programa Comentários Tipos de Dados Operadores Entrada e Saída via Console Declaração e Inicialização de Variáveis Declaração e Inicialização de Arrays Conversão de Tipos Controle de Fluxo Tratamento de Exceções
![Page 28: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/28.jpg)
28
Formato Geral de um Programa
public public classclass HelloWord {
public static voidpublic static void main ( String args[ ] ) {
System.out.println ("Oi tudo bem" );
}
}
![Page 29: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/29.jpg)
29
Padrões de Codificação Java da Sun
Padrões de Espaçamento
Recuo
Cada nível de recuo de ter exatamente 4(quatro) espaços em branco.
O início de comentários, declarações de pacotes, instruções de importação, declarações de interface e de classe não deve ser recuado.
Variáveis estáticas e de instância, construtores, métodos e seus respectivos comentários, devem ser recuados em um nível.
Dentro de construtores e métodos, variáveis locais, instruções e seus comentários devem ser recuados em um nível.
As instruções (e seus comentários) que estiverem dentro de instruções de bloco devem ser recuadas em mais um nível para cada nível de aninhamento envolvido.
![Page 30: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/30.jpg)
30
Padrões de Codificação Java da Sun
Padrões de Espaçamento (Cont.)
Comprimento e Quebra de linha
Uma linha não deve ter mais que 80 caracteres. Recomenda-se 65.
Insira a quebra depois da vírgula.
Insira a quebra antes de um operador.
Alinhe a nova linha pelo espaço de dois níveis de recuo além do início da linha na qual a quebra foi inserida.
Procure não inserir quebras dentro de uma expressão entre parênteses.
![Page 31: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/31.jpg)
31
Padrões de Codificação Java da Sun
Padrões de Espaçamento (Cont.) Espaço em branco
Utilize uma linha em branco Entre métodos e construtores; depois de sua última variável de instância; dentro de um método entre as variáveis locais e a
primeira instrução; dentro de um método para separar segmentos
lógicos de código; antes de comentários de uma linha ou um bloco.
Utilize um espaço em branco Entre operadores binários; depois de vírgulas em uma lista de argumentos; depois de expressões em uma instrução for. entre uma palavra-chave e um parêntese; depois de conversões.
![Page 32: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/32.jpg)
32
Padrões de Codificação Java da Sun
Padrões de Espaçamento (Cont.) Formatação de Chaves
Chaves para classes, interfaces, construtores e métodos A chave de abertura deve ocorrer no final da
mesma linha da declaração. A chave de fechamento inicia uma nova linha, e é
recuada para coincidir com o início da declaração. Chaves
![Page 33: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/33.jpg)
33
Comentários Comentário de uma única linha
// comentário
Comentário de múltiplas linhas
/* primeira linha de comentário
segunda linha de comentário */
Comentário para Documentação
(Javadoc)
/** comentário */
![Page 34: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/34.jpg)
34
Tipos de Dados Numéricos
Inteiros int short long byte
Ponto Flutuante float double
Caracter char
Lógico boolean
![Page 35: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/35.jpg)
35
Tipos de Dados (cont.)
Inteiros
Faixa de Armazenamento
Tamanho
Tipo
-128 a +1271 bytebyte
-9.223.372.036.854.775.808L a+9.223.372.036.854.775.807L
8 byteslong
-32.768 a +32.7672 bytesshort
-2.147.483.648 a +2.147.483.647
4 bytesint
![Page 36: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/36.jpg)
36
Tipos de Dados (cont.)
Ponto Flutuante
Faixa de Armazenamento
Tamanho
Tipo
Aproximadamente± 1.79769313486231570E+308
8 bytesdouble
Aproximadamente± 3.40282347E+38F
4 bytesfloat
![Page 37: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/37.jpg)
37
Tipos de Dados (cont.) Caracter
Faixa de Armazenamento
Tamanho
Tipo
\u0000 a \uFFFF (Unicode)
(www.unicode.org)
2 byteschar
Lógico (booleano)
Valores PossíveisTipotrue / falseboolean
![Page 38: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/38.jpg)
38
Operadores
Aritméticos
Atribuição
Relacionais
Lógicos
bit a bit
![Page 39: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/39.jpg)
39
Operadores Aritméticos
Decremento--Incremento++
Resto da divisão%
Divisão/Multiplicação*
Subtração / Menos Unário
-Adição+
OperaçãoOperador
![Page 40: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/40.jpg)
40
Operadores de Atribuição
Atribuições Acumulativas (Compostas)
Atribuição=
Resto da divisão%=
Divisão/=Multiplicação*=
Subtração-=Adição+=
OperaçãoOperador
![Page 41: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/41.jpg)
41
Operadores Relacionais
Diferente de!=
Igual a==
Maior ou igual a>=
Menor ou igual a<=
Maior que>
Menor que<
OperaçãoOperador
![Page 42: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/42.jpg)
42
Operadores Lógicos
Condicional
(Ternário)
? :
Ou lógico (or)||
E lógico (and)&&
Negação (not)!
OperaçãoOperador
![Page 43: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/43.jpg)
43
Operadores bit a bit
Not bit a bit (complemento)
~
Deslocamento à direita com preenchimento de zeros
>>>
Deslocamento à direita>>
Deslocamento à esquerda<<
Xor bit a bit^
Or bit a bit|
And bit a bit&
OperaçãoOperador
![Page 44: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/44.jpg)
44
Entrada e Saída via Console Entrada através do array de
argumentos da linha de comando
Saída através do método println( )
Exemplo:class EntraSai {
public static void main(String args [ ] ) {
System.out.println( args[0] );
}
}
![Page 45: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/45.jpg)
45
Entrada e Saída com printf e Scannerimport java.util.*;
public class EntradaSaida {public static void main(String args[]) {
Scanner sc = new Scanner(System.in);System.out.printf("Digite seu nome: ");String nome = sc.next();System.out.printf("Digite um número: ");double n1 = sc.nextDouble();System.out.printf("Digite outro número: ");double n2 = sc.nextDouble();double media = (n1 + n2) / 2;System.out.printf("Olá " + nome +
", a média entre %1$3.2f e %2$3.2f é: %3$6.2f", n1, n2, media);
Date d = new Date();System.out.printf("\nHoje é %1$td/%1$tm/%1$ty", d);System.out.printf("\nHoje é %1$td/%1$tm/%1$tY", d);System.out.printf("\nHoje é %1$td/%1$tb/%1$tY", d);System.out.printf("\nHoje é %1$td de %1$tB de %1$tY", d);String hora = String.format("\nAgora é %1$tkh%1$tMm%1$tSs", d);System.out.println(hora);
}} // mais detalhes em java.util.Scanner e java.util.Formatter
![Page 46: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/46.jpg)
46
Declaração e Inicialização de Variáveis
class Variaveis {
static int x = 10; // Variável de Classe
public static void main ( String args [ ] ) {
int y; // Variável de Instância
y = 5;
System.out.println ("A soma é " + (x+y) );
}
}
![Page 47: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/47.jpg)
47
Conversão de Tipos
Conversão entre Tipos Numéricos
Conversões Automáticas
Conversões Explícitas (cast)
Conversão de String para int
![Page 48: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/48.jpg)
48
Conversão entre Tipos Numéricos Conversões Automáticas
Conversão de tipos menores para maiores
byte x = 10; // byte – 8 bits
short y = x; // short – 16 bits
int w = y; // int – 32 bits
long z = w; // long – 64 bits
![Page 49: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/49.jpg)
49
Conversão entre Tipos Numéricos
Conversões Explícitas (cast)
Conversão de tipos maiores para
menores (quando há uma possível
perda de dados).
long x = 123456L; // long – 64 bits
short y = (short) x;// short – 16 bitscast
![Page 50: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/50.jpg)
50
Conversão entre Strings e Números Integer.parseInt ( String s ) Integer.valueOf ( String s ).intValue( ) String.valueOf ( int n )
Exemplo:class Converte { public static void main( String args[ ] ) { int x = Integer.parseInt( args[0] ); int y = Integer.valueOf( args[1] ).intValue(); System.out.println("A soma é " + (x+y) ); }}
![Page 51: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/51.jpg)
51
Controle de Fluxo Blocos
(seqüências) {
comando1;
comando2;
}
Decisão (desvios) if switch
Repetição (laços) while do while for
Controles de laço break continue System.exit(0)
![Page 52: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/52.jpg)
52
Desvio - ifSintaxe:
ifif (condição)comando1;
elseelsecomando2;
Exemplo:
if (x == 10) {y = x * 2;z = x / 2;
}else {
y = x * 3;z = x / 3;
}
![Page 53: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/53.jpg)
53
Desvio - switchSintaxe:
switchswitch (expressão) {casecase valor1: comando1;
break;casecase valor2:
comando2;break;
defaultdefault:comandosDefault;
}
Exemplo:switch (ch) {
case ‘8’: setaAcima++;
break;case ‘2’:
setaAbaixo++;
break;default:
outros++;}
![Page 54: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/54.jpg)
54
Laço - whileSintaxe:
whilewhile (condição) comando;
Exemplo:
int x = 1;while (x <= 10) {
System.out.println( x );x++;
}
![Page 55: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/55.jpg)
55
Laço – do...whileSintaxe:
dodo comando;
whilewhile (condição) ;
Exemplo:
int x = 1; do {
System.out.println( x );x++;
} while (x <= 10) ;
![Page 56: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/56.jpg)
56
Laço – forSintaxe:
forfor ( inicialização ; condição ; incremento )comando;
Exemplo:
for ( int x=1 ; x <= 10 ; x++)System.out.println( x );
![Page 57: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/57.jpg)
57
Controles de laço breakbreak
Encerra a execução do laço. Desviando o fluxo para a instrução seguinte ao bloco.
continuecontinue
Desvia o fluxo para o teste condicional do laço.
System.exit(0)System.exit(0)
Encerra o programa (não bem um controle de laço).
![Page 58: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/58.jpg)
58
JOptionPane (javax.swing.JOptionPane)
Principais Métodos Estáticos showConfirmDialogshowConfirmDialog ( ComponentComponent parent, ObjectObject
mensagem, StringString título, intint opção, intint tipoMensagem
)
Exibe uma caixa de confirmação.
showInputDialogshowInputDialog ( )
Exibe uma caixa de entrada de dados.
showMessageDialogshowMessageDialog ( )
Exibe uma caixa de mensagem.
Os três métodos possuem a mesma assinatura.
![Page 59: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/59.jpg)
59
JOptionPane (javax.swing.JOptionPane)
Principais Campos
Valores de retorno para showConfirmDialog
( )
CANCEL_OPTION
NO_OPTION
OK_OPTION
YES_OPTION
![Page 60: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/60.jpg)
60
JOptionPane (javax.swing.JOptionPane)
Tipos de Mensagens
ERROR_MESSAGE
INFORMATION_MESSAGE
PLAIN_MESSAGE
QUESTION_MESSAGE
WARNING_MESSAGE
![Page 61: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/61.jpg)
61
JOptionPane (javax.swing.JOptionPane)
import javax.swing.*;
public class OptionDos {public static void main(String args[]) {
String n = JOptionPane.showInputDialogshowInputDialog(null, "Digite seu nome");
int x = JOptionPane.showConfirmDialogshowConfirmDialog(null, "Oi " + n + ", tudo bem ? ");
if (x == JOptionPane.YES_OPTION)System.out.print("Sim");
elseif (x == JOptionPane.NO_OPTION)
System.out.print("Não");System.out.println(", " + n);JOptionPane.showMessageDialogshowMessageDialog(null, "Tchau !");System.exit(0);
}}
![Page 62: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/62.jpg)
62
JOptionPane (javax.swing.JOptionPane)
JOptionPane com botões personalizados
import javax.swing.JOptionPane;
public class TestaDialogo {
public static void main(String[] args) {
String opt[] = {"sim", "não"};
int resp = JOptionPane.showOptionDialogshowOptionDialog(null, "Mensagem",
"Título", 0, JOptionPane.QUESTION_MESSAGE, null, optopt, "sim");
System.out.println(resp);
}
}
![Page 63: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/63.jpg)
63
Na mesma pasta que estiver o arquivo .class, crie um arquivo texto com o nome de manifest.txt contento o seguinte:
Main-class: NomeClasseMain-class: NomeClasse
(linha em branco)(linha em branco)
Não esquecer da linha em branco no final do manifest. Execute o seguinte comando:
jar cvfm arquivo.jar manifest.txt classe.classjar cvfm arquivo.jar manifest.txt classe.class Será criado um aquivo jar executável, basta clicá-lo que
ele será executado.
Jar Executável
![Page 64: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/64.jpg)
64
Exercícios Propostos1) Dado N, calcular a soma dos números naturais de 1 até N.
2) Dado N, imprimir os N primeiros naturais ímpares.
3) Dado N, imprimir o fatorial de N.
4) Dados X inteiro e N natural, calcular X elevado a N.
5) Dada uma lista de 10 números inteiros, exibir o menor e
o maior número dessa seqüência.
6) Dado N natural, informar se N é primo.
7) Dado N natural, informar se N é perfeito.
8) Dada uma lista de números inteiros, calcular a soma dos
números pares.
![Page 65: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/65.jpg)
65
Exercícios Propostos1) Dado N, calcular quantas vezes N pode ser dividido por
2 (calcular o ).
2) Dado N e dois números naturais I e J diferentes de 0,
exibir em ordem crescente os N primeiros naturais que
são múltiplos de I ou de J e ou de ambos. Exemplo:
Para N=6, I=2 e J=3 a saída deverá ser: 0, 2, 3, 4, 6, 8.
3) Dado N, exibir seus algarismos na ordem inversa.
4) Dado N, exibir a soma de N com N invertido
(algarismos).
5) Dado N na base binária, exibi-lo na base decimal.
![Page 66: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/66.jpg)
66
Entrada em tempo de execução (antes da classe Scanner)
import java.io.*;import java.io.*;public class Entrada {
public static void main(String[] args) throws throws IOExceptionIOException {
System.out.print("Digite um número: ");InputStreamReaderInputStreamReader isr = new
InputStreamReaderInputStreamReader(System.in);BufferedReaderBufferedReader br = new BufferedReaderBufferedReader(isr);String s = br.readLinereadLine();int x = Integer.parseInt(s);System.out.print("Digite um número: ");s = br.readLinereadLine();int y = Integer.parseInt(s);System.out.println(" A soma e " + (x + y));
}}
![Page 67: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/67.jpg)
67
Declaração e Inicialização de Arrays
Declara-se um array utilizando colchetes após o tipo de dado base ou após o nome do array:
int[ ] numeros;
String nomes[ ] = new String[5]; Assim como variáreis, pode-se declarar e
inicializar arrays:
int[ ] primos = { 2, 3, 5, 7, 11, 13 }; O atributo lengthlength armazena o tamanho do array:
int tam = primos.length;
![Page 68: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/68.jpg)
68
Carga e exibição de Arraysimport javax.swing.*;public class CarregaExibeArray {
public static void main(String[] args) {String nomes[] = new String[3];for (int cont = 0; cont < nomes.length; cont++) {
nomes[cont] = JOptionPane.showInputDialog("Digite um nome");
}for (int cont = 0; cont < nomes.length; cont++) {
System.out.println(nomes[cont]);}
System.out.println("Usando for estendido");for (String n:nomes) {
System.out.println(n);}
}}
![Page 69: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/69.jpg)
69
Exercícios com arrays Criar um método min( )min( ) que recebe um array a[0..n-1]a[0..n-1]
e retorne o menor elemento do array. Criar um método max( )max( ) que recebe um array a[0..n-a[0..n-
1]1] e retorne o maior elemento do array. Criar um método isSorted( )isSorted( ) que recebe um array
a[0..n-1]a[0..n-1] e retorne truetrue se os elementos do array estiverem em ordem crescente ou falsefalse caso contrário.
Criar um método inverte( )inverte( ) que recebe um array a[0..n-1]a[0..n-1] e inverte a posição de seus elementos.
Criar um método append( )append( ) que recebe um array a[0..n-1]a[0..n-1] e um inteiro xx. E acrescenta xx ao final do array.
Criar um método insert( )insert( ) que recebe um array a[0..n-a[0..n-1]1] e um inteiro xx. E insere xx no início do array.
![Page 70: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/70.jpg)
70
Exceções Sintaxe
trytry {
código que pode provocar umaexceção;
} catchcatch ( Tipo_Exceção variavel ) {
código de tratamento;
} finalyfinaly {
código a ser executado ocorrendo ou
nãoexceções;
}
![Page 71: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/71.jpg)
71
Exceções
Exemplotry {
int x = Integer.parseInt(args[0]);
System.out.println ( "O quadrado do valor é " +
x*x );
} catch (Exception e){
System.out.println( "Problemas " + e);
}
![Page 72: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/72.jpg)
72
Usando import staticimport static javax.swing.JOptionPane.*;
import static java.lang.Integer.parseInt;
import static java.lang.Math.*;
import static java.lang.System.out;
public class UsandoImportStatic {
public static void main(String[] args) {
String entrada = showInputDialog("Digite um número");
int numero = parseInt(entrada);
out.println("O quadrado desse número é " + pow(numero, 2));
}
}
![Page 73: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/73.jpg)
73
Algumas Classes JavaO JDK é fornecido com uma quantidade muito grande de classes já implementadas. Veremos algumas:
String / StringBuffer Date / Calendar / GregorianCalendar Math Empacotadores de Objetos (wrappers) Arrays Vector
![Page 74: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/74.jpg)
74
Classe String (java.lang.String)
Um objeto String tal como os wrappers não podem ter seu conteúdo alterado após sua inicialização.
Declaração e InicializaçãoString str;str = “Oi tudo bem”;
String str = “Oi tudo bem”;
String str = new String(“Oi tudo bem”);
![Page 75: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/75.jpg)
75
Classe String (cont.)
Principais Construtores StringString ( ) StringString ( byte [ ] bytes ) StringString ( char [ ] value ) StringString ( String value ) StringString ( StringBuffer buffer )
![Page 76: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/76.jpg)
76
Classe String (cont.)
Principais Métodos char charAtcharAt ( int índice )
Retorna o caracter na posição índice.
int compareTocompareTo ( String str2 )Compara lexicograficamente com str2. Retorna 0 se for igual; um número negativo se for menor; um número positivo se for maior.
boolean equalsequals ( Object o )Verifica se o é uma string com a mesma seqüência de caracteres.
![Page 77: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/77.jpg)
77
Classe String (cont.)
boolean equalsIgnoreCaseequalsIgnoreCase ( String str2 )Compara com str2 ignorando diferenças entre letras maiúsculas e minúsculas.
boolean startsWithstartsWith ( String str2 )Retorna true se a string começar com str2.
boolean endsWithendsWith ( String str2 )Retorna true se a string terminar com str2.
String replacereplace ( char ant, char novo )Retorna uma nova string com os caracteres ant substituídos por novo.
![Page 78: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/78.jpg)
78
Classe String (cont.)
int lengthlength ( )Retorna o comprimento da string.
String substringsubstring ( int início)String substringsubstring ( int início, int fim )Retorna uma nova string com os caracteres a partir de início até o final da string ou até o índice fim (exclusivo).
char [ ] toCharArraytoCharArray ( )Retorna um novo array de caracteres contendo a string.
String trimtrim ( )Retorna uma nova string eliminando todos os espaços iniciais e finais.
![Page 79: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/79.jpg)
79
Classe String (cont.)
String toLowerCasetoLowerCase ( )
Retorna uma nova string com as letras maiúsculas convertidas para minúsculas.
String toUpperCasetoUpperCase ( )
Retorna uma nova string com as letras minúsculas convertidas para maiúsculas.
int indexOfindexOf ( String str2)
int indexOfindexOf ( String str2, int início )
Retorna o início da primeira incidência de str2 començando no índice 0 ou início
![Page 80: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/80.jpg)
80
Classe StringBuffer (java.lang.StringBuffer)
Principais Construtores StringBufferStringBuffer ( ) StringBufferStringBuffer ( int tamanho ) StringBufferStringBuffer ( String str )
![Page 81: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/81.jpg)
81
Classe StringBuffer (cont.)
Principais Métodos StringBuffer appendappend (char ch ) StringBuffer appendappend (int i )
Acrescenta um dado ao final do conteúdo do String Buffer.
int capacitycapacity ( )
Retorna a capacidade atual do String Buffer. char charAtcharAt ( int indice )
Retorna o caractere indicado por indice.
![Page 82: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/82.jpg)
82
Classe StringBuffer (cont.)
StringBuffer deletedelete (int inicio, int final )
Remove os caracteres entre os índices
inicio e final.
StringBuffer deleteCharAtdeleteCharAt (int indice )
Remove o caractere indicado por indice.
StringBuffer insertinsert (int indice, char ch )
StringBuffer insertinsert (int indice, String s )
Insere um dado no String Buffer a partir da
posição indice.
![Page 83: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/83.jpg)
83
Classe StringBuffer (cont.)
int lengthlength ( )
Retorna a quantidade de caracteres do String Buffer.
void setLengthsetLength ( int novotamanho )
Ajusta o tamanho do String Buffer. String substringsubstring ( int inicio, int final )
Retorna uma nova String contendo os caracteres de índice inicio até final.
String toStringtoString ( )
Retorna uma String com o conteúdo do String Buffer.
![Page 84: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/84.jpg)
Manipulação de Datas
Calendar
GregorianCalendar
Object
Date
Classe Abstrata
![Page 85: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/85.jpg)
85
Classe Date (java.util.Date) Contrutores
DateDate ( ) DateDate ( long tempo )
Principais Métodos boolean after after ( Date quando )
verifica se a data do objeto é posterior a quando. boolean before before ( Date quando )
verifica se a data do objeto é anterior a quando. boolean equalsequals ( Object quando )
verifica se a data do objeto é igual a quando. long getTime getTime ( )
Retorna o número de milisegundos desde 01/01/1970, 00:00:00 GMT até a data do objeto.
void setTime setTime ( long time )Ajusta a data do objeto.
![Page 86: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/86.jpg)
86
Classe Calendar (java.util.Calendar)
Contrutores CalendarCalendar ( ) CalendarCalendar ( TimeZone zona, Locale local )
Principais Métodos void addadd ( int campo, int quantidade )
Adiciona quantidade a um campo do objeto. boolean afterafter ( Object quando )
verifica se a data do objeto é posterior a quando. boolean beforebefore ( Object quando )
verifica se a data do objeto é anterior a quando. boolean equalsequals ( Object quando )
verifica se a data do objeto é igual a quando.
![Page 87: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/87.jpg)
87
Classe Calendar (java.util.Calendar)
Principais Métodos int getget ( int campo )
Retorna o valor de um campo do objeto. Date getTimegetTime ( )
Retorna a data do objeto. void setset ( int campo, int valor )
Ajusta o valor de um campo do objeto. void setset ( int ano, int mes, int dia) void setset ( int ano, int mes, int dia, int hora,
int minuto, int segundo )Ajusta os campos indicados.
void setTimesetTime ( Date quando )Ajusta a data do objeto.
![Page 88: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/88.jpg)
88
Classe Calendar (java.util.Calendar)
Principais Campos Calendar.DATE Calendar.YEAR Calendar.MONTH Calendar.DAY_OF_MONTH Calendar.DAY_OF_WEEK Calendar.DAY_OF_WEEK_IN_MONTH Calendar.AM_PM Calendar.HOUR Calendar.HOUR_OF_DAY Calendar.MINUTE Calendar.SECOND
![Page 89: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/89.jpg)
89
Exemplo de Manipulação de Datas
import java.util.*;public class Agora {
public static void main(String[] args) {GregorianCalendarGregorianCalendar now = new GregorianCalendar()GregorianCalendar();System.out.println(new Date()Date());int dia = now.getget(Calendar.DAY_OF_MONTH);// Janeiro = 0int mes = now.getget(Calendar.MONTHCalendar.MONTH) + 1;int ano = now.getget(Calendar.YEARCalendar.YEAR);// Domingo = 1int semana = now.getget(Calendar.DAY_OF_WEEKCalendar.DAY_OF_WEEK);// hora 24:00int hora = now.getget(Calendar.HOUR_OF_DAYCalendar.HOUR_OF_DAY);System.out.println("data: " + dia + "/" + mes + "/" + ano);System.out.println("dia da semana: " + semana);System.out.println("hora: " + hora);
}}
![Page 90: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/90.jpg)
90
Classe Math (java.lang.Math)
É uma classe final, portanto, não pode ser derivada. Não possui contrutores acessíveis. Seus métodos são static.
Devem ser utilizados da seguinte
forma:double potencia = Math.pow ( 2, 5 );
Campos double MATH.E
double MATH.PI
![Page 91: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/91.jpg)
91
Classe Math (java.lang.Math)
Principais Métodos
double absabs ( double a )Retorna o valor absoluto de a.
double maxmax ( double a, double b )Retorna o maior valor entre a e b.
double minmin ( double a, double b )Retorna o menor valor entre a e b.
![Page 92: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/92.jpg)
92
Classe Math (java.lang.Math) double powpow ( double a, double b )
Retorna a elevado a b.
double randomrandom ( )Retorna um número aleatório ente 0.0 e 1.0
long roundround (float a )Retorna o valor de a arredondado.
double sqrtsqrt ( double a )Retorna a raiz quadrada de a.
![Page 93: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/93.jpg)
93
Empacotadores de Objetos (wrappers)
São classes que armazenam tipos básicos:Integer, Long, Float, Double, Short, Byte, Character, Void e Boolean.
São utilizados para armazenamento de tipos básicos onde objetos são requeridos. E também para conversão em String.
Assim como String, um wrapper é imutável.
![Page 94: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/94.jpg)
94
Wrappers (cont.)
Construtores ( Integer ) IntegerInteger ( int valor ) IntegerInteger ( String string )
Principais Campos Integer.MIN_VALUEMIN_VALUE
Menor valor possível em um int (-231) Integer.MAX_VALUEMAX_VALUE
Maior valor possível em um int (231-1)
![Page 95: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/95.jpg)
95
Wrappers (cont.)
Principais Métodos int intintValueValue ( )
Retorna o valor como tipo primitivo int. String toStringtoString ( int i )
Retorna uma String que representa um valor int. int parseparseIntInt ( String s )
Retorna um int representado em uma String. Integer valueOfvalueOf ( String s )
Retorna um Integer representado em uma String. int compareTocompareTo ( Integer valor)
Compara com outro objeto Integer. boolean equalsequals ( Object obj )
Verifica se os dois objetos representam o mesmo valor.
![Page 96: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/96.jpg)
96
Classe Arrays (java.util.Arrays)
Principais Métodos boolean equalsequals ( int[ ] a, int[ ] a2 )
Verifica se o array a é igual ao array a2. void fillfill ( int[ ] a, int valor ) void fillfill ( int[ ] a, int deindice, int ateindice, int
valor )
Preenche um array com um determinado valor. int binarySearchbinarySearch ( int[ ] a, int chave )
Efetua uma busca do valor chave no array a. void sortsort ( int[ ] a ) void sortsort ( int[ ] a, int deindice, int ateindice )
Classifica um array.
![Page 97: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/97.jpg)
97
Classe Vector (java.util.Vector)
Construtores VectorVector ( ) VectorVector ( int capacidadeInicial ) VectorVector ( int capacidadeInicial, int incremento )
Principais Métodos boolean addadd ( Object obj ) void addadd ( int indice, Object obj )
Inclui um elemento no índice especificado. Object getget ( int indice )
Retorna o elemento do índice especificado.
![Page 98: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/98.jpg)
98
Classe Vector (java.util.Vector)
Principais Métodos void removeremove ( int indice )
Remove o elemento do índice especificado. void setset ( int indice, Object obj )
Sobrescreve o elemento do índice especificado. void setSizesetSize ( int n )
Ajusta a quantidade de elementos do vetor. int sizesize ( )
Retorna a quantidade de elementos do vetor.
![Page 99: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/99.jpg)
99
Programação Orientada a Objetos
Atributos Métodos Propriedades
Encapsulamento Herança Polimorfismo
Construtores Instanciação (new) Pacotes Construção de uma Classe (class)
![Page 100: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/100.jpg)
100
Formato geral de uma classe
packagepackage NomeDoPacote;
importimport NomeDoPacote;
ModificadorClasse classclass NomeClasse extendsextends Superclasse implementsimplements ListaDeInterfaces {
TipoAtributo NomeAtributo, ... ;
ModificadorMétodo TipoMétodo NomeMétodo (ListaDeParâmetros) {
Corpo do Método}...
}
![Page 101: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/101.jpg)
101
Modificadores de Acesso
Sem efeito.(não aplicável)static
Não permite definição de subclasses.
Não permite definição de subclasses.final
Não pode ser instanciada.Não pode ser instanciada.
abstract
Pode ser utilizada apenas na classe externa.
(não aplicável)private
Pode ser instanciada e utilizada apenas no mesmo package.
Pode ser instanciada e utilizada apenas no mesmo package.
(sem modificador)
Pode ser utilizada apenas no mesmo package ou em subclasses da classe externa.
(não aplicável)protected
Pode ser instanciada e utilizada livremente.
Pode ser instanciada e utilizada livremente.public
Classe InternaClasse InternaClasseClasseModificadModificadoror
![Page 102: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/102.jpg)
102
Modificadores de Acesso
Podem ser utilizadas a partir do nome da classe.
Podem ser invocados a partir do nome da classe.static
Constantes.Não podem ser sobrescritos.final
(não aplicável).Não podem ser definidos; sem corpo (devem ser sobrescritos).
abstract
Podem ser utilizadas apenas na classe.
Podem ser invocados apenas na classe.private
Podem ser utilizadas apenas no mesmo package.
Podem ser invocados apenas no mesmo package.
(sem modificador)
Podem ser utilizadas apenas no mesmo package ou em subclasses.
Podem ser invocados apenas no mesmo package e em subclasses.
protected
Podem ser utilizadas livremente.
Podem ser invocados livremente.public
Variáveis MembroVariáveis MembroMétodosMétodosModificadModificadoror
![Page 103: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/103.jpg)
103
Instalação do IDE Livre Eclipse Baixe o Eclipse no endereço:
http://www.eclipse.org Clique no link Download EclipseDownload Eclipse; Clique em Other downloads for 3.2.1Other downloads for 3.2.1 (ou mais recente); Baixe os seguintes itens para a sua plataforma:
Platform Runtime Binary JDT Runtime Binary
Após o download, descompacte os dois arquivos na pasta raiz de seu hd.
Será criada uma pasta c:\eclipse. Crie um atalho na área de trabalho para eclipse.exe que está na pasta c:eclipse\bin.
![Page 104: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/104.jpg)
104
Interface Gráfica - AWT
![Page 105: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/105.jpg)
105
Pacote java.awt
DescriçãoAWT (Abstract Window Toolkit) é uma biblioteca para a programação de interface gráfica onde seus elementos dependem do sistema de interface gráfica nativo (plataforma de execução).
Containers Componentes
Gerenciadores de Layout
Cores, Desenhos e Fontes
![Page 106: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/106.jpg)
106
Hierarquia AWT
Component
Container
Window
FrameDialog
FileDialog
Panel
Applet
Object
![Page 107: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/107.jpg)
107
Component (java.awt.Component) Construtores
ComponentComponent ( ) Principais Métodos
void addadd ( PopupMenu menu )Adiciona um menu popup ao componente.
void paintpaint ( Graphics g )Executado toda vez que o componente precisa ser desenhado.
void removeremove ( MenuComponent menu )Remove o menu popup do componente.
void repaintrepaint ( )Redesenha o componente chamando paint()
void setBackgroundsetBackground ( Color cor )Define a cor de fundo do componente
void setBoundssetBounds ( int x, int y, int larg, int alt )Define a localização e a dimensão do coponente.
![Page 108: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/108.jpg)
108
Component (java.awt.Component)
void setCursorsetCursor ( Cursor tipoCursor )Define o tipo de cursor.
void setEnablesetEnable ( boolean b )Abilita ou desabilita o componente.
void setFontsetFont ( Font tipoFonte )Define a Fonte.
void setForegroundsetForeground ( Color cor )Define a cor de frente (Fonte).
void setLocationsetLocation ( int x, int y )Define a localização dentro do container.
void setSizesetSize ( int largura, int altura )Define o tamanho.
void setVisiblesetVisible ( boolean b )Define se o componente está visível ou não.
Void updateupdate ( Graphics g )Redesenha o componente.
![Page 109: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/109.jpg)
109
Container (java.awt.Container)
Construtores ContainerContainer ( )
Principais Métodos void addadd ( Component componente, int pos )
Adiciona um componente ao container. void removeremove ( Component componente )
Remove um componente do container. void removeremove ( int pos )
Remove um componente do container. void removeAllremoveAll ( )
Remove todos os componentes do container. void setLayoutsetLayout ( LayoutManager mgr )
Define o gerenciador de layout do container.
![Page 110: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/110.jpg)
110
Window (java.awt.Window) Construtores
WindowWindow ( Frame aplicacao ) WindowWindow ( Window aplicacao )
Principais Métodos void disposedispose ( )
Elimina a janela. void hidehide ( )
Esconde a janela (depricado, substituido por setVisible(false)).
void packpack ( )Ajusta tamanho e posicionamento dos componentes.
void setVisiblesetVisible ( booleanboolean b)Define se a janela está visível ou não.
void showshow ( )Exibe a janela (depricado, substituido por setVisible(true) ).
![Page 111: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/111.jpg)
111
Frame (java.awt.Frame) Construtores
FrameFrame ( ) FrameFrame ( String titulo )
Principais Métodos void setIconImagesetIconImage ( Image imagem )
Define um ícone para a frame. void setMenuBarsetMenuBar ( MenuBar menu )
Define uma barra de menus para a frame. void setResizablesetResizable ( boolean ajustavel )
Define se a frame pode ser redimensionada pelo usuário ou não.
void setTitlesetTitle ( String titulo )Define o título da frame.
Gerenciador de Layout default BorderLayout
![Page 112: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/112.jpg)
112
Panel (java.awt.Panel)
Construtores PanelPanel ( ) PanelPanel ( LayoutManager layout )
Gerenciador de Layout default FlowLayout
![Page 113: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/113.jpg)
113
Componentes AWT
Label
Button
TextField
TextArea
Checkbox
CheckboxGroup
Choice
List
![Page 114: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/114.jpg)
114
Label (java.awt.Label)
Principais Campos CENTER LEFT RIGHT
Construtores LabelLabel ( ) LabelLabel ( String texto ) LabelLabel ( String texto, int alinhamento )
![Page 115: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/115.jpg)
115
Label (java.awt.Label)
Principais Métodos int getAlignmentgetAlignment ( )
Retorna o alinhamento horizontal.
String getTextgetText ( )
Retorna o texto do Label.
void setAlignmentsetAlignment ( int alinhamento )
Ajusta o alinhamento horizontal.
void setTextsetText ( String texto )
Define o texto do Label.
![Page 116: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/116.jpg)
116
Button (java.awt.Button)
Construtores ButtonButton ( ) ButtonButton ( String texto )
Principais Métodos void addActionListeneraddActionListener ( ActionListener l )
Adiciona um ouvinte de ação ao botão. Void addMouseListener ( MouseListener m)
Adiciona um ouvinte de mouse ao botão. String getLabelgetLabel ( )
Retorna o texto do botão. void setLabelsetLabel ( String texto )
Define o texto do botão.
![Page 117: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/117.jpg)
117
TextField (java.awt.TextField) Construtores
TextFieldTextField ( ) TextFieldTextField ( int colunas ) TextFieldTextField ( String texto ) TextFieldTextField ( String texto, int colunas )
Principais Métodos int getColumnsgetColumns ( )
Retorna a quantidade de colunas visíveis. String getTextgetText ( )
Retorna o texto do componente. void setColumnssetColumns ( int colunas )
Define a quantidade de colunas visíveis. void setEditablesetEditable ( boolean b )
Define se o TextField pode ser editado ou não. void setTextsetText ( String texto )
Define o texto do componente.
![Page 118: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/118.jpg)
118
TextArea (java.awt.TextArea)
Construtores TextAreaTextArea ( )
TextAreaTextArea ( int linhas, int colunas )
TextAreaTextArea ( String texto )
TextAreaTextArea ( String texto, int linhas, int
colunas )
TextAreaTextArea ( String texto, int linhas, int
colunas, int barrasDeRolagem )
![Page 119: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/119.jpg)
119
TextArea (java.awt.TextArea)
Principais Métodos void appendappend ( String texto )
Acrescenta uma string ao conteúdo do texto. int getRowsgetRows ( )
Retorna a quantidade de linhas do texto. void insertinsert ( String texto, int pos )
Insere uma string ao texto. void replaceRangereplaceRange ( String texto, int inicio, int fim )
Substitui uma área do texto por uma string. void setRowssetRows ( int linhas )
Define a quantidade de linhas.
![Page 120: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/120.jpg)
120
Checkbox (java.awt.Checkbox)
Construtores CheckboxCheckbox ( ) CheckboxCheckbox ( String texto) CheckboxCheckbox ( String texto, boolean estado) CheckboxCheckbox ( String texto, boolean estado,
CheckboxGroup grupo) CheckboxCheckbox ( String texto, CheckboxGroup
grupo, boolean estado)
![Page 121: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/121.jpg)
121
Checkbox (java.awt.Checkbox)
Principais Métodos void addItemListeneraddItemListener ( ItemListener l )
Adiciona um ouvinte de itens à caixa. String getLabelgetLabel ( )
Retorna o texto da caixa. boolean getStategetState ( )
Retorna o estado (se está selecionada ou não). void setCheckboxGroupsetCheckboxGroup ( CheckboxGroup grupo )
Define um grupo de seleção (RadioBox). void setLabelsetLabel ( String texto )
Define o texto da caixa. void setStatesetState ( boolean estado )
Define o estado da caixa.
![Page 122: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/122.jpg)
122
CheckboxGroup (java.awt.CheckboxGroup)
Construtores CheckboxGroupCheckboxGroup ( )
Principais Métodos Checkbox getSelectedCheckboxgetSelectedCheckbox ( )
Retorna o Checkbox que está selecionado.
void setSelectedCheckboxsetSelectedCheckbox ( Checkbox
item )
Seleciona um Checkbox.
![Page 123: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/123.jpg)
123
Choice (java.awt.Choice)
Construtores ChoiceChoice ( )
Principais Métodos void addadd ( String item )
Adiciona um item ao menu de opções. void addItemListeneraddItemListener ( ItemListener l)
Adiciona um ouvinte de itens. String getItemgetItem ( int indice )
Retorna o rótulo do item especificado. int getItemCountgetItemCount ( )
Retorna a quantidade de itens.
![Page 124: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/124.jpg)
124
Choice (java.awt.Choice)
Principais Métodos int getSelectedIndexgetSelectedIndex ( )
Retorna o índice do item selecionado. String getSelectedItemgetSelectedItem ( )
Retorna o rótulo do item selecionado. void insertinsert ( String item, int indice )
Insere um item no menu. void removeremove ( int posição ) void removeremove ( String item )
Remove um item do menu. void removeAllremoveAll ( )
Remove todos os itens do menu. void selectselect ( int posição ) void selectselect ( String item )
Seleciona um item do menu.
![Page 125: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/125.jpg)
125
List (java.awt.List)
Construtores ListList ( ) ListList ( int linhas ) ListList ( int linhas, boolean seleçãoMultipla )
Principais Métodos void addadd ( String item ) void addadd ( String item, int indice )
Adiciona um item à lista. void addActionListeneraddActionListener ( ActionListener l)
Adiciona um ouvinte de ação à lista. void deselectdeselect ( int indice )
Retira a seleção de um item. String getItemgetItem ( int indice)
Retorna o rótulo de um item.
![Page 126: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/126.jpg)
126
List (java.awt.List)
Principais Métodos (cont.) int getItemCountgetItemCount ( )
Retorna a quantidade de itens na lista. String [ ] getItemsgetItems ( )
Retorna os itens da lista como um array de strings. int getRowsgetRows ( )
Retorna a quantidade de linhas visíveis. int getSelectedIndexgetSelectedIndex ( ) int [ ] getSelectedIndexesgetSelectedIndexes ( )
Retorna o(s) índice(s) do(s) iten(s) selecionados. String getSelectedItemgetSelectedItem () String [ ] getSelectedItemsgetSelectedItems ()
Retorna o(s) rótulo(s) do(s) iten(s) selecionados.
![Page 127: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/127.jpg)
127
List (java.awt.List)
boolean isIndexSelectedisIndexSelected ( int indice)Retorna se um item está selecionado ou não.
boolean isMultipleModeisMultipleMode ( )Retorna se a lista é de seleção múltipla ou não.
void removeremove ( int posição ) void removeremove ( String item )
Remove um item da lista. void removeAllremoveAll ( )
Remove todos os itens da lista. void replaceItemreplaceItem ( String novoItem, int indice )
Troca um item da lista. void selectselect ( int indice )
Seleciona um item da lista. void setMultipleModesetMultipleMode ( boolean b )
Define se a lista é de seleção múltipla ou não.
![Page 128: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/128.jpg)
128
Interface Gráfica - JFC Swing
![Page 129: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/129.jpg)
129
Pacote javax.swing Descrição
Biblioteca de componentes de interface gráfica. Possui um conjunto maior de componentes do que o AWT. Seus componentes não dependem da plataforma de execução. As aplicações java podem ter a aparência de aplicações nativas (look and feel), a aparência default é chamada de Metal.
Containers Componentes Caixas de Diálogo Menus Bordas
![Page 130: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/130.jpg)
130
Diagrama de Classes Swing
Component
Container
Window
FrameJWindow
Panel
Applet
Object
JFrame JApplet
JComponent
JPanel JButton JLabel
AWT
ComponentesComponentes
SwingSwing
![Page 131: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/131.jpg)
131
Containers Swing (javax.swing)
JFrame
JPanel
JEditorPane
JTabbedPane
JOptionPane
JFileChooser
JColorChooser
![Page 132: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/132.jpg)
132
JFrame (javax.swing.JFrame) Construtores
JFrameJFrame ( ) JFrameJFrame ( String titulo )
Principais Métodos Container getContentPanegetContentPane ( )
Retorna a referência do painel de conteúdo. void setDefaultCloseOperationsetDefaultCloseOperation ( int operação )
Define qual operação será realizada ao fechar a frame.
void setJMenuBarsetJMenuBar ( JMenuBar menu)Define o menu da frame.
void setLayoutsetLayout ( LayoutManager gerenciador)Define o gerenciador de layout da frame.
Para adicionar um componente:frame.getContentPane.add ( componente, pos )
![Page 133: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/133.jpg)
133
JFrame (javax.swing.JFrame)
void setDefaultCloseOperationsetDefaultCloseOperation ( int operação )Define a operação que deve ser executada quando o usuário fecha a frame.
O valor de operação pode ser um dos seguintes: DO_NOTHING_ON_CLOSEDO_NOTHING_ON_CLOSE (definido em
WindowConstants): Não faz nada; o programa deve controlar o fechamento através do método windowClosing.
HIDE_ON_CLOSEHIDE_ON_CLOSE (definido em WindowConstants): Automatica-mente esconde a frame.
DISPOSE_ON_CLOSEDISPOSE_ON_CLOSE (definido em WindowConstants): Automati-camente esconde e elimina a frame.
EXIT_ON_CLOSEEXIT_ON_CLOSE (definido em JFrame): Encerra a aplicação usando o método System exit.
O valor default é HIDE_ON_CLOSEHIDE_ON_CLOSE..
![Page 134: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/134.jpg)
134
JFrame (javax.swing.JFrame)
import java.awt.*;import javax.swing.*;
public class TamanhoFrame extends JFrameJFrame {public TamanhoFrame() {
ToolkitToolkit tk = Toolkit.getDefaultToolkit()getDefaultToolkit();DimensionDimension d = tk.getScreenSize()getScreenSize();int largura = d.widthwidth/2;int altura = d.heightheight/2;setBounds(largura/2, altura/2, largura, altura);ImageImage img = tk.getImagegetImage("fig.gif");setIconImagesetIconImage(img);setVisible(true);
}
public static void main(String[] args) {new TamanhoFrame();
}}
![Page 135: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/135.jpg)
135
Passos sugeridos para a criação de uma interface gráfica
Importe os pacotes necessários. Declare a classe como sendo derivada de JFrame. Declare os componentes como atributos da
classe. No construtor:
Defina as características da frame. Crie (instancie) os componentes com o
operador newnew. Adicione os componentes aos painéis, caso
necessário. Adicione os componentes e/ou painéis na
frame. Redimensione e exiba a frame.
Instancie a classe no método main( ).
![Page 136: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/136.jpg)
136
JPanel (javax.swing.JPanel)
Principais Construtores JPanelJPanel ( ) JPanelJPanel ( LayoutManager
gerenciador )
JPanel é um container, porém, também é subclasse de JComponent.
![Page 137: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/137.jpg)
137
Componentes Swing
JLabel
JButton
JToggleButton
JTextField
JTextArea
JCheckbox
ButtonGroup
JRadioButton
JList
JComboBox
![Page 138: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/138.jpg)
138
JComponent ( javax.swing.JComponent )
Construtor JComponentJComponent ( )
Principais Métodos Graphics getGraphicsgetGraphics ( )
Retorna o contexto gráfico do componente. void paintComponentpaintComponent ( Graphics g )
Pinta o componente. Normalmente é sobreposto. void setBordersetBorder ( Border borda )
Define a borda do componente. void setFontsetFont ( Fonte tipo )
Define a fonte do componente. void setOpaquesetOpaque ( boolean flag )
Define se o componente é opaco ou transparente. void setToolTipTextsetToolTipText ( String dica )
Define o texto de ajuda do componente. void setVisiblesetVisible ( boolean flag )
Define se o componente está visível ou não.
![Page 139: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/139.jpg)
139
JLabel ( javax.swing.JLabel )
Construtores JLabelJLabel ( ) JLabelJLabel ( Icon ícone ) JLabelJLabel ( Icon imagem, int alinhamento ) JLabelJLabel ( String texto ) JLabelJLabel ( String texto, Icon ícone, int
alinhamento ) JLabelJLabel ( String texto, int alinhamento )
![Page 140: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/140.jpg)
140
JLabel ( javax.swing.JLabel )
Principais Métodos String getTextgetText ( )
Retorna o texto do label. void setHorizontalAlignmentsetHorizontalAlignment ( int alinhamento )
Define o alinhamento horizontal. void setHorizontalTextPositionsetHorizontalTextPosition ( int posição )
Define a posição do texto em relação à imagem. void setIconsetIcon ( Icon ícone )
Define uma imagem para o label void setTextsetText ( String texto )
Define o texto do label void setVerticalAlignmentsetVerticalAlignment ( int alinhamento )
Define o alinhamento vertical. void setVerticalTextPositionsetVerticalTextPosition ( int posição )
Define a posição do texto em relação à imagem.
![Page 141: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/141.jpg)
141
JButton ( javax.swing.JButton )
Construtores
JButtonJButton ( )
JButtonJButton ( Icon ícone )
JButtonJButton ( String texto)
JButtonJButton ( String texto, Icon ícone)
![Page 142: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/142.jpg)
142
JButton ( javax.swing.JButton ) Principais Métodos (AbstractButton)
void addActionListeneraddActionListener ( ActionListener l )Adiciona um ouvinte de ação para o componente.
String getTextgetText ( )Retorna o texto do componente.
void setEnablesetEnable ( boolean estado )Define se o componente está ativado.
void setHorizontalAlignmentsetHorizontalAlignment ( int alinhamento )Define o alinhamento horizontal do texto.
void setHorizontalPositionsetHorizontalPosition ( int posição )Define a posição do texto em relação à imagem.
void setIconsetIcon ( Icon ícone )Define uma imagem para o componente.
![Page 143: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/143.jpg)
143
JButton ( javax.swing.JButton )
void setPressedIconsetPressedIcon ( Icon ícone )Define a imagem que será exibida quando o componente for pressionado.
void setRolloverEnabledsetRolloverEnabled ( boolean estado )Define se o efeito rollover está ativado ou não.
void setRolloverIconsetRolloverIcon ( Icon ícone )Define a imagem que será exibida quando o mouse passar por cima do componente.
void setTextsetText ( String texto )Define o texto do componente.
void setVerticalAlignmentsetVerticalAlignment ( int alinhamento )Define o alinhamento vertical do texto.
void setVerticalPositionsetVerticalPosition ( int posição )Define a posição do texto em relação à imagem.
![Page 144: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/144.jpg)
144
JTextField ( javax.swing.JTextField )
Principais Construtores
JTextFieldJTextField ( )
JTextFieldJTextField ( int colunas )
JTextFieldJTextField ( String texto )
JTextFieldJTextField ( String texto, int
colunas )
![Page 145: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/145.jpg)
145
JTextField ( javax.swing.JTextField ) Principais Métodos
void addActionListeneraddActionListener ( ActionListener l )Adiciona um ouvinte de ação para o componente.
String getSelectedTextgetSelectedText ( )Retorna o texto selecionado.
int getSelectionEndgetSelectionEnd ( )Retorna a posição final da seleção.
int getSelectionStartgetSelectionStart ( )Retorna a posição inicial da seleção.
String getTextgetText ( ) String getTextgetText ( int posição, int tamanho )
Retorna o texto do componente. bollean isEditableisEditable ( )
Informa se o componente pode ser editado.
![Page 146: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/146.jpg)
146
JTextField ( javax.swing.JTextField )
void replaceSelectionreplaceSelection ( String texto )Troca o texto selecionado.
void selectselect ( int início, int final )Seleciona uma parte do texto.
void selectAllselectAll ( )Seleciona todo o texto.
void setColumnssetColumns ( int colunas )Define a quantidade de colunas do componente.
void setEditablesetEditable ( boolean b ) Define se o componente poderá ser editado.
void setFontsetFont ( Font f )Define o tipo de fonte do componente.
void setHorizontalAlignmentsetHorizontalAlignment ( int alinhamento )Define o alinhamento horizontal do texto.
void setTextsetText ( String texto )Define o texto do componente.
![Page 147: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/147.jpg)
147
Exemplo de Interface Gráficaimport javax.swing.*;public class ExemploGUI extends JFrame {
JButton btnNorte, btnSul, btnOeste, btnCentro, btnLeste;public ExemploGUI() {
btnNorte = new JButton("Norte");btnSul = new JButton("Sul");btnOeste = new JButton("Oeste");btnCentro = new JButton("Centro");btnLeste = new JButton("Leste");add(btnNorte, "North");add(btnSul, "South");add(btnOeste, "West");add(btnCentro, "Center");add(btnLeste, "East");pack();setVisible( true );
}public static void main(String args[]) {
new ExemploGUI();}
}
![Page 148: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/148.jpg)
148
Exemplo de Componentes Swing
import java.awt.*;import javax.swing.*;javax.swing.*;
class BotaoFrame extends JFrameJFrame {JButtonJButton btn;public BotaoFrame ( ) {
setTitle ("Oi Tudo Bem" );setSize (300, 200);btn = new JButton ("Botão Norte" );btn.setIcon ( new ImageIcon ("figura.gif") );btn.setToolTipText ("Ativa comando" );btn.setMnemonic ( ‘B’ );addadd ( btn, "North" );setVisible( true );
}}
![Page 149: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/149.jpg)
149
Gerenciadores de Layout Um container utiliza algo chamado
Gerenciador de Layout para controlar o posicionamento e dimensionamento de seus componentes. Alguns desses gerenciadores são descritos a seguir: BorderLayout FlowLayout GridLayout GridBagLayout
![Page 150: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/150.jpg)
150
BorderLayout (java.awt.BorderLayout)
North
South
CenterWest East
![Page 151: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/151.jpg)
151
BorderLayout (java.awt.BorderLayout)
Construtores BorderLayoutBorderLayout ( ) BorderLayoutBorderLayout ( int hgap, int vgap )
Principais Campos CENTER “Center” EAST “East” NORTH “North” SOUTH “South” WEST “West”
Principais Métodos void setHgapsetHgap ( int hgap )
Define o espaço horizontal entre as áreas. void setVgapsetVgap ( int vgap )
Define o espaço vertical entre as áreas.
![Page 152: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/152.jpg)
152
FlowLayout (java.awt.FlowLayout)
![Page 153: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/153.jpg)
153
FlowLayout (java.awt.FlowLayout)
Construtores FlowLayoutFlowLayout ( ) FlowLayoutFlowLayout ( int alinhamento ) FlowLayoutFlowLayout (int alinhamento, int hgap, int vgap )
Principais Campos (alinhamento) CENTER LEFT RIGHT
Principais Métodos void setAlignmentsetAlignment ( int alinhamento )
Define o alinhamento horizontal dos componentes. void setHgapsetHgap ( int hgap )
Define o espaço horizontal entre os componentes. void setVgapsetVgap ( int vgap )
Define o espaço vertical entre os componentes.
![Page 154: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/154.jpg)
154
GridLayout (java.awt.GridLayout)
![Page 155: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/155.jpg)
155
GridLayout (java.awt.GridLayout)
Construtores GridLayoutGridLayout ( ) GridLayoutGridLayout ( int rows, int cols ) GridLayoutGridLayout (int rows,int cols, int hgap,int vgap )
Principais Métodos void setColumnssetColumns ( int cols )
Define a quantidade de colunas da grade. void setHgapsetHgap ( int hgap )
Define o espaço horizontal entre as células. void setRowssetRows ( int rows )
Define a quantidade de linhas da grade. void setVgapsetVgap ( int vgap )
Define o espaço vertical entre as células.
![Page 156: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/156.jpg)
156
GridBagLayout (java.awt.GridBagLayout)
![Page 157: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/157.jpg)
157
GridBagLayout (java.awt.GridBagLayout)
Construtor GridBagLayoutGridBagLayout ( )
UtilizaçãoGridBagLayoutGridBagLayout gbl = new GridBagLayout( );
painel.setLayout (gbl);
GridBagConstraintsGridBagConstraints gbc = new GridBagConstraints( );gbc.weightx = 100; gbc.weighty = 100; // pesopesogbc.gridx = 0; gbc.gridy = 0; // posiçãoposiçãogbc.gridwidth = 1; gbc.gridheight = 3; // tamanhotamanhopainel.add ( componente, gbc );
![Page 158: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/158.jpg)
158
GridBagConstraints (java.awt.GridBagConstraints)
Construtores GridBagConstraintsGridBagConstraints ( )
GridBagConstraintsGridBagConstraints (intint gridx, intint gridy,
intint gridwidth, intint gridheight, doubledouble
weightx, doubledouble weighty, intint anchor, intint
fill, InsetsInsets insets, int ipadx, intint ipady )
![Page 159: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/159.jpg)
159
GridBagConstraints (java.awt.GridBagConstraints)
Principais Campos fill gridx gridy gridheight gridwidth anchor weightx weighty insets ipadx ipady
BOTH HORIZONTAL NONENONE VERTICAL
RELATIVE
REMAINDER
CENTERCENTER, EAST, NORTH, NORTHEAST, NORTHWEST, SOUTH, SOUTHEAST, SOUTHWEST, WEST
![Page 160: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/160.jpg)
160
Exemplo de GridBagLayoutimport java.awt.*;import javax.swing.*;
public class ExemploGBL extends JFrame {JButton btnNorte, btnEsq1, btnEsq2, btnEsq3, btnCentro;
public ExemploGBL() {setLayout (new GridBagLayout( ));setLayout (new GridBagLayout( ));GridBagConstraints gbc = new GridBagConstraints gbc = new
GridBagConstraints( );GridBagConstraints( );btnNorte = new JButton("Norte");btnNorte = new JButton("Norte");gbc.weightx = 30; gbc.weighty = 30; // pesogbc.gridx = 0; gbc.gridy = 0; // posiçãogbc.gridwidth = 3; gbc.gridheight = 1; // tamanhogbc.fill = GridBagConstraints.BOTH; // preenchimentoadd (btnNorte, gbc);btnEsq1 = new JButton("Esquerdo 1");btnEsq1 = new JButton("Esquerdo 1");gbc.gridx = 0; gbc.gridy = 1; // posiçãogbc.gridwidth = 1; gbc.gridheight = 1; // tamanhoadd(btnEsq1, gbc);
![Page 161: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/161.jpg)
161
Exemplo de GridBagLayout
btnEsq2 = new JButton("Esquerdo 2");btnEsq2 = new JButton("Esquerdo 2");gbc.gridx = 0; gbc.gridy = 2; // posiçãoadd(btnEsq2, gbc);btnEsq3 = new JButton("Esquerdo 3");btnEsq3 = new JButton("Esquerdo 3");gbc.gridx = 0; gbc.gridy = 3; // posiçãoadd(btnEsq3, gbc);btnCentro = new JButton("Posição Central");btnCentro = new JButton("Posição Central");gbc.weightx = 100; gbc.weighty = 100; // pesogbc.gridx = 1; gbc.gridy = 1; // posiçãogbc.gridwidth = 2; gbc.gridheight = 3; // tamanhoadd(btnCentro, gbc);pack();setBounds(100, 50, 300, 200);setVisible(true);
}public static void main(String args[]) {
new ExemploGBL();}
}
![Page 162: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/162.jpg)
162
Modificando o Layout dos containers
Para alterar o gerenciador de layout de um container, você invoca o método setLayout( ) com uma instância do gerenciador de layout desejado. Normalmente a chamada deste método ocorre no construtor da classe.
...
setLayout( new FlowLayout( ) );setLayout( new FlowLayout( ) );...
Quando utilizado o gerenciador de layout GridBagLayout, deve-se definir um constraints para cada componente.
![Page 163: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/163.jpg)
163
Agrupando componentes em paineis Uma forma de se adicionar vários componentes
em uma única área do layout é agrupando esses componentes em painéis, aí então adicionamos o painel na posição desejada.
Anterior
Próximo
Sair
![Page 164: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/164.jpg)
164
Agrupando componentes em paineisimport javax.swing.*;
public class Paineis extends JFrame {JButton btn1, btn2, btn3;JPanel p;public Paineis() {
btn1 = new JButton("Botão 1");btn2 = new JButton("Botão 2");btn3 = new JButton("Botão 3");p = new JPanel();p.add(btn1);p.add(btn2);p.add(btn3);add(p, "South");setBounds(100, 50, 200, 300);setVisible( true );
}public static void main(String args[]) {
new Paineis();}
}
![Page 165: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/165.jpg)
165
Exercício proposto Crie a seguinte interface:
Anterior
Próximo
Sair
Agenda Pessoal
Nome:
Endereço:
Telefone:
![Page 166: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/166.jpg)
166
Exercício Programa de Cálculos
Programa de Cálculos
Número:
Par / Ímpar Fatorial
Primo Perfeito
___________Resultado:
![Page 167: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/167.jpg)
167
Criação de um Painel com TítuloCriação de um Painel com TítuloJPanel p = new JPanel ( new GridLayout(linhas, colunas) );TitledBorder titulo =
BorderFactory.createTitledBorder("Título");p.setBorder(titulo);
Outros métodos da classe BorderFactory para criação de bordas:
createLineBorder ( )Borda de linha simples
createMatteBorder ( )Borda larga preenchida com uma cor ou ícone repetido.
createEmptyBorder ( )Borda vazia
createEtechedBorder ( )Borda de linha com efeito 3D.
createBevelBorder( ) createLoweredBevelBorder ( ) createRaisedBevelBorder ( )
Bordas com efeito de superfície em relevo.
![Page 168: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/168.jpg)
168
JCheckBox ( javax.swing.JCheckBox )
Alguns Construtores
JCheckBoxJCheckBox ( )
JCheckBoxJCheckBox ( String texto )
JCheckBoxJCheckBox ( String texto, boolean
estado )
![Page 169: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/169.jpg)
169
JCheckBox ( javax.swing.JCheckBox ) Alguns Métodos
boolean isSelectedisSelected ( )Retorna true se o componente estiver selecionado.
void setSelectedsetSelected ( boolean estado )Define o estado do componente.
String getTextgetText ( )Retorna o rótulo do componente.
void setTextsetText ( String texo )Define o rótulo do componente.
void setActionCommandsetActionCommand ( String texto)Define o texto de ação de commando do componente.
void addAcitonListeneraddAcitonListener ( ActionListener a ) void addItemListeneraddItemListener ( ItemListener i )
![Page 170: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/170.jpg)
170
Exemplo com JCheckBoximport javax.swing.*;import javax.swing.border.*;import java.awt.*;import java.awt.event.*;public class ExemploJCheckBox extends JFrame implements ActionListener {
JCheckBox chkProgramacao, chkBancoDados, chkAnalise;JButton btn;public ExemploJCheckBox() {
chkProgramacao = new JCheckBox("Programação");chkBancoDados = new JCheckBox("Banco de Dados");chkAnalise = new JCheckBox("Análise de Sistemas");btn = new JButton("krikaki");btn.addActionListener(this);JPanel p = new JPanel(new GridLayout(3,1));TitledBorder titulo = BorderFactory.createTitledBorder("Assunto");p.setBorder(titulo);p.add(chkProgramacao);p.add(chkBancoDados);p.add(chkAnalise);add(p, "Center");add(btn, "South");pack();setVisible(true);
}
![Page 171: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/171.jpg)
171
Exemplo com JCheckBoxpublic void actionPerformed(ActionEvent evt) {
String resp = "";boolean nada = true;if (chkProgramacao.isSelected()) {
resp = chkProgramacao.getText();nada = false;
}if (chkBancoDados.isSelected()) {
resp += "\n" + chkBancoDados.getText();nada = false;
}if (chkAnalise.isSelected()) {
resp += "\n" + chkAnalise.getText();nada = false;
}if (nada) {
JOptionPane.showMessageDialog(null, "Nenhum Assunto");} else
JOptionPane.showMessageDialog(null, resp);}public static void main(String[] args) {
new ExemploJCheckBox();}
}
![Page 172: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/172.jpg)
172
JRadioButton ( javax.swing.JRadioButton )
Alguns Construtores
JRadioButtonJRadioButton ( )
JRadioButtonJRadioButton ( String texto )
JRadioButtonJRadioButton ( String texto,
boolean estado )
![Page 173: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/173.jpg)
173
JRadioButtonRadioButton ( javax.swing.JRadioButton )
Alguns Métodos boolean isSelectedisSelected ( )
Retorna true se o componente estiver selecionado. void setSelectedsetSelected ( boolean estado )
Define o estado do componente. String getTextgetText ( )
Retorna o rótulo do componente. void setTextsetText ( String texo )
Define o rótulo do componente. void setActionCommandsetActionCommand ( String texto)
Define o texto de ação de commando do componente. void addAcitonListeneraddAcitonListener ( ActionListener a ) void addItemListeneraddItemListener ( ItemListener i )
![Page 174: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/174.jpg)
174
ButtonGroupButtonGroup ( javax.swing.ButtonGroup ) Utilizado para agrupar JRadioButton's
Construtor ButtonGroup ( )
Alguns Métodos void addadd ( AbstractButton b )
Adiciona um botão no grupo. void clearSelectionclearSelection ( )
Limpa a seleção no grupo. String getSelection.getActionCommandgetSelection.getActionCommand ( )
Retorna o texto de ação de comando do componente selecionado.
![Page 175: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/175.jpg)
175
Exemplo com JRadioButtonimport javax.swing.*;import javax.swing.border.*;import java.awt.*;import java.awt.event.*;
public class ExemploJRadioButton extends JFrame implements ActionListener {JRadioButton rbMasc, rbFem;JButton btn;ButtonGroup bgSexo;
public ExemploJRadioButton() {rbMasc = new JRadioButton("Masc.", true);rbMasc.setActionCommand("Masculino");rbFem = new JRadioButton("Fem.");rbFem.setActionCommand("Feminino");
bgSexo = new ButtonGroup();bgSexo.add(rbMasc);bgSexo.add(rbFem);
btn = new JButton("krikaki");btn.addActionListener(this);
![Page 176: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/176.jpg)
176
Exemplo com JRadioButtonJPanel p = new JPanel(new GridLayout(3,1));TitledBorder titulo = BorderFactory.createTitledBorder("Sexo");p.setBorder(titulo);p.add(rbMasc);p.add(rbFem);
add(p, "Center");add(btn, "South");pack();setVisible(true);
}public void actionPerformed(ActionEvent evt) {
String resp = bgSexo.getSelection().getActionCommand();JOptionPane.showMessageDialog(null, resp);
}public static void main(String[] args) {
new ExemploJRadioButton();}
}
![Page 177: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/177.jpg)
177
JListJList (javax.swing.JList) Alguns Construtores
JList ( ) JList ( Object[] elementos ) JList ( ListModel modelo )
Alguns Métodos int getSelectedIndexgetSelectedIndex ( )
retorna o índice do primeiro elemento selecionado. int [ ] getSelectedIndicesgetSelectedIndices ( )
retorna um array com os índices de todos os elementos selecionados.
Object getSelectedValuegetSelectedValue ( )Retorna o primeiro elemento selecionado.
Object [ ] getSelectedValuesgetSelectedValues ( )Retorna um array com todos os elementos selecionados.
void clearSelectionclearSelection ( )Limpa a seleção dos elementos.
ListModel getModelgetModel ( )Retorna o modelo de dados da lista.
void setListDatasetListData ( Object [ ] elementos )Cria um ListModel através do array e o aplica à lista.
![Page 178: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/178.jpg)
178
JListJList (javax.swing.JList) boolean isSelectedIndexisSelectedIndex ( int índice )
retorna true se o elemento estiver selecionado. boolean isSelectionEmptyisSelectionEmpty ( )
retorna true se não houver nenhum elemento selecionado.
void setVisibleRowCountsetVisibleRowCount (int qtd)Define a quantidade de elementos exibidos.
void setSelectedIndexsetSelectedIndex ( int índice )Seleciona um elemento.
void setSelectedIndicessetSelectedIndices ( int [] índices )Seleciona todos os elementos indicados no array.
void setSelectionModesetSelectionMode ( int modo)Define o modo de seleção, modo pode ser:
ListSelectionModel.SINGLE_SELECTION ListSelectionModel.SINGLE_INTERVAL_SELECTION ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
![Page 179: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/179.jpg)
179
DefaultListModelDefaultListModel (javax.swing.DefaultListModel)
Construtor DefaultListModel ( )
Alguns Métodos void addElementaddElement ( Object elemento )
Adiciona um elemento ao final da lista. void clearclear ( )
Remove todos os elementos da lista. Object getElementAtgetElementAt ( int índice )
Retorna o elemento especificado. int getSizegetSize ( )
Retorna o número de elementos na lista. boolean isEmptyisEmpty ( )
Retorna true se a lista estiver vazia. Object removeremove ( int índice )
Remove um elemento de índice especificado.
![Page 180: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/180.jpg)
180
Exemplo JListExemplo JListimport javax.swing.*;import java.awt.event.*;
public class ExemploJList extends JFrame implements ActionListener {JList lista;DefaultListModel modelo;JButton btn;
public ExemploJList() {String dados[] = {"JavaSE", "JavaEE", "JavaME"};modelo = new DefaultListModel();for (String texto:dados) {
modelo.addElement(texto);}
// No lugar do for, você pode usar: // lista.setListData(dados);
lista = new JList(modelo);
lista.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
JScrollPane sp = new JScrollPane(lista);add(sp, "Center");
![Page 181: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/181.jpg)
181
Exemplo JListExemplo JListbtn = new JButton("krikaki");btn.addActionListener(this);add(btn, "South");
pack();setVisible(true);
}public void actionPerformed(ActionEvent evt) {
Object selecionados[] = lista.getSelectedValues();for (Object texto:selecionados) {
System.out.println(texto);}
}public static void main(String[] args) {
new ExemploJList();}
}
![Page 182: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/182.jpg)
182
JComboBoxJComboBox (javax.swing.JComboBox) Alguns Construtores
JComboBox ( ) JComboBox ( Object[] elementos ) JComboBox ( ComboBoxModel modelo )
Alguns Métodos int getSelectedIndexgetSelectedIndex ( )
Retorna o índice do primeiro elemento selecionado. Object getSelectedItemgetSelectedItem ( )
Retorna o primeiro elemento selecionado. void addItemaddItem ( Object elemento )
Adiciona um item na lista. void removeAllItemsremoveAllItems ( )
Remove todos os elementos da lista. void setMaximumRowCountsetMaximumRowCount ( int qtdLinhas)
Define o número máximo de linhas a ser exibido. void setSelectedIndexsetSelectedIndex ( int índice )
Seleciona um determinado elemento. ComboBoxModel getModelgetModel ( )
Retorna o modelo da lista.
![Page 183: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/183.jpg)
183
DefaultComboBoxModelDefaultComboBoxModel(javax.swing.DefaultComboBoxModel)
Alguns Construtores DefaultComboBoxModel ( ) DefaultComboBoxModel ( Object [] elementos)
Alguns Métodos void addElementaddElement ( Object elemento )
Adiciona um elemento ao final da lista. Object getElementAtgetElementAt ( int índice )
Retorna o elemento especificado. int getSizegetSize ( )
Retorna o número de elementos na lista. void removeAllElementsremoveAllElements ( )
Remove todos os elementos da lista. Object removeElementAtremoveElementAt ( int índice )
Remove um elemento de índice especificado.
![Page 184: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/184.jpg)
184
Exemplo JComboBoxExemplo JComboBoximport javax.swing.*;import java.awt.event.*;
public class ExemploJComboBox extends JFrame implements ActionListener {JComboBox combo;JButton btn;
public ExemploJComboBox() {String dados[] = {"JavaSE", "JavaEE", "JavaME"};combo = new JComboBox(dados);combo.addItem("Todas");combo.setSelectedIndex(3);combo.setMaximumRowCount(2);add(combo, "Center");
btn = new JButton("krikaki");btn.addActionListener(this);add(btn, "South");
![Page 185: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/185.jpg)
185
Exemplo JComboBoxExemplo JComboBoxpack();setVisible(true);
}public void actionPerformed(ActionEvent evt) {
Object selecionado = combo.getSelectedItem();JOptionPane.showMessageDialog(null, selecionado);
}public static void main(String[] args) {
new ExemploJComboBox();}
}
![Page 186: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/186.jpg)
186
JTable JTable (javax.swing.JTable)
Alguns Construtores JTable ( ) JTable ( Object [] [] dados, Object [] nomeColunas ) JTable ( TableModel modelo )
Alguns Métodos TableModel getModelgetModel ( )
Retorna o TableModel da tabela. int getRowCountgetRowCount ( )
Retorna a quantidade de linhas no modelo da tabela. int getSelectedColumngetSelectedColumn ( )
Retorna o índice da coluna selecionada, -1 se nenhuma coluna estiver selecionada. int getSelectedRowgetSelectedRow ( )
Retorna o índice da linha selecionada, -1 se nenhuma linha estiver selecionada. int [ ] getSelectedRowsgetSelectedRows ( )
Retorna um array contendo os índices de todas as linha selecionadas. int getSelectedRowCountgetSelectedRowCount ( )
Retorna a quantidade de linhas selecionadas. Object getValueAtgetValueAt (int linha, int coluna )
Retorna o valor de uma célula. void setValueAtsetValueAt ( Object valor, int linha, int coluna )
Define o valor de uma célula.
![Page 187: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/187.jpg)
187
DefaultTableModelDefaultTableModel
(javax.swing.table.DefaultTableModel)
Alguns Construtores DefaultTableModel ( ) DefaultTableModel ( int linhas, int colunas ) DefaultTableModel ( Object [] [] dados, Object []
nomeColunas )
Alguns Métodos void addRowaddRow ( Object [] linha )
Adiciona uma linha no final do modelo da tabela. int getColumnCountgetColumnCount ( )
Retorna a quantidade de colunas do modelo da tabela. int getRowCountgetRowCount ( )
Retorna a quantidade de linhas do modelo da tabela. Object getValueAtgetValueAt (int linha, int coluna )
Retorna o valor de uma célula. void insertRowinsertRow ( int índice, Object [] linha )
Insere uma linha no modelo da tabela. void removeRowremoveRow ( int índice )
Remove uma linha no modelo da tabela. void setValueAtsetValueAt ( Object valor, int linha, int coluna )
Define o valor de uma célula.
![Page 188: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/188.jpg)
188
Exemplo JTableExemplo JTableimport javax.swing.*;import javax.swing.table.*;import java.awt.event.*;public class ExemploJTable extends JFrame implements ActionListener {
JTable tabela;DefaultTableModel modelo;JButton btn;public ExemploJTable() {
String colunas[] = {"Nome", "Endereço", "Telefone"};String dados[][] = { {"João", "Rua Tal", "4444"}, {"Maria", "Av Tal",
"3333"} };modelo = new DefaultTableModel(dados, colunas);tabela = new JTable(modelo);JScrollPane sp = new JScrollPane(tabela);add(sp, "Center");
btn = new JButton("krikaki");btn.addActionListener(this);add(btn, "South");pack();setVisible(true);
}
![Page 189: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/189.jpg)
189
Exemplo JTableExemplo JTablepublic void actionPerformed(ActionEvent evt) {
int linha = tabela.getSelectedRow();int coluna = tabela.getSelectedColumn();if (linha != -1 && coluna != -1) {
String dado = (String) tabela.getValueAt(linha, coluna);JOptionPane.showMessageDialog(this, dado);
} else {JOptionPane.showMessageDialog(this, "Nenhuma célula selecionada");
}}public static void main(String[] args) {
new ExemploJTable();}
}
![Page 190: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/190.jpg)
190
Exemplo JTable usando um Exemplo JTable usando um ResultSetResultSet
import java.sql.*;import javax.swing.*;
public class ExemploDBGrid extends JFrame {JTable tabela;DBGridModel modelo;Connection con;ResultSet rs;public ExemploDBGrid( ) {
try {Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/uniban";con = DriverManager.getConnection(url, "root", "admin");Statement st =
con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery("Select * from Cliente order by Nome");} catch (Exception ex) {
ex.printStackTrace( );}
Classe Principalonde a tabela é
criada
![Page 191: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/191.jpg)
191
Exemplo JTable usando um Exemplo JTable usando um ResultSetResultSet
modelo = new DBGridModel(rs);tabela = new JTable(modelo);JScrollPane sp = new JScrollPane(tabela);add(sp, "Center");
pack();setVisible(true);
}public static void main(String[] args) {
new ExemploDBGrid();}
}
![Page 192: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/192.jpg)
192
Exemplo JTable usando um Exemplo JTable usando um ResultSetResultSet
import javax.swing.table.*;import java.sql.*;public class DBGridModel extends AbstractTableModel {
private ResultSet rs;private ResultSetMetaData estrutura; public DBGridModel(ResultSet rs) {
this.rs = rs;try {
estrutura = rs.getMetaData();rs.first();
} catch (SQLException e) {e.printStackTrace();
}}public int getColumnCount() {
int qtdColunas = 0;try {
qtdColunas = estrutura.getColumnCount();} catch (SQLException e) {
e.printStackTrace();}return qtdColunas;
}
Classe que Implementa osmétodos obrigatórios
de AbstractTableModel
![Page 193: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/193.jpg)
193
Exemplo JTable usando um Exemplo JTable usando um ResultSetResultSet
public int getRowCount() {int qtdLinhas = 0;try {
rs.last();qtdLinhas = rs.getRow();
} catch (SQLException e) {e.printStackTrace();
}return qtdLinhas;
}public Object getValueAt(int linha, int coluna) {
Object valor = null;try {
rs.absolute(linha + 1);valor = rs.getObject(coluna + 1);
} catch (SQLException e) {e.printStackTrace();
}return valor;
}}
![Page 194: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/194.jpg)
194
Exemplo JTable ResultSet Exemplo JTable ResultSet AtualizávelAtualizável
import java.sql.*;import javax.swing.*;import java.awt.event.*;
public class ExemploDBGridRW extends JFrame implements ActionListener {JTable tabela;DBGridModelRW modelo;Connection con;ResultSet rs;
JButton btnIncluir, btnExcluir;
public ExemploDBGridRW() {try {
Class.forName("com.mysql.jdbc.Driver");String url = "jdbc:mysql://localhost:3306/uniban";con = DriverManager.getConnection(url, "root", "admin");Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);rs = st.executeQuery("Select * from Cliente");
} catch (Exception ex) {ex.printStackTrace();
}
Classe Principalonde a tabela é
criada
![Page 195: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/195.jpg)
195
Exemplo JTable ResultSet Exemplo JTable ResultSet AtualizávelAtualizável
modelo = new DBGridModelRW(rs);tabela = new JTable(modelo);JScrollPane sp = new JScrollPane(tabela);add(sp, "Center");
btnIncluir = new JButton("Incluir");btnIncluir.addActionListener(this);btnExcluir = new JButton("Excluir");btnExcluir.addActionListener(this);JPanel pBtn = new JPanel();pBtn.add(btnIncluir);pBtn.add(btnExcluir);add(pBtn, "South");
pack();setVisible(true);
}
![Page 196: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/196.jpg)
196
Exemplo JTable ResultSet Exemplo JTable ResultSet AtualizávelAtualizável
public void actionPerformed(ActionEvent evt) {Object btn = evt.getSource();if (btn == btnIncluir) {
Object dados[] = new Object[5];dados[0] = JOptionPane.showInputDialog("Qual o nome?");dados[1] = JOptionPane.showInputDialog("Qual o sexo?");dados[2] = JOptionPane.showInputDialog("Qual a data?");dados[3] = JOptionPane.showInputDialog("Qual o estado?");dados[4] = new Boolean(JOptionPane.showInputDialog("Está ativo?"));modelo.addRow(dados);
} else if (btn == btnExcluir) {if (tabela.getSelectedRowCount() == 0) { JOptionPane.showMessageDialog(this, "Não há linhas selecionadas");} else {
int linhas[] = tabela.getSelectedRows();for (int cont = linhas.length - 1; cont >= 0; cont--) {
modelo.removeRow(linhas[cont]);}
}}
}public static void main(String[] args) {
new ExemploDBGridRW();}
}
![Page 197: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/197.jpg)
197
Exemplo JTable ResultSet Exemplo JTable ResultSet AtualizávelAtualizável
import javax.swing.table.*;import java.sql.*;
public class DBGridModelRW extends AbstractTableModel {private ResultSet rs;private ResultSetMetaData estrutura;
public DBGridModelRW(ResultSet rs) {this.rs = rs;try {
estrutura = rs.getMetaData();rs.first();
} catch (SQLException e) {e.printStackTrace();
}}public int getColumnCount() {
int qtdColunas = 0;try {
qtdColunas = estrutura.getColumnCount();} catch (SQLException e) {
e.printStackTrace();}return qtdColunas;
}
Classe que Implementa osmétodos obrigatórios
de AbstractTableModel
![Page 198: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/198.jpg)
198
Exemplo JTable ResultSet Exemplo JTable ResultSet AtualizávelAtualizável
public int getRowCount() {int qtdLinhas = 0;int linhaCorrente = 1;try {
linhaCorrente = rs.getRow();rs.last();qtdLinhas = rs.getRow();if (linhaCorrente > 0) {
rs.absolute(linhaCorrente);}
} catch (SQLException e) {e.printStackTrace();
}return qtdLinhas;
}
public Object getValueAt(int linha, int coluna) {Object valor = null;try {
rs.absolute(linha + 1);valor = rs.getObject(coluna + 1);
} catch (SQLException e) {e.printStackTrace();
}return valor;
}
![Page 199: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/199.jpg)
199
Exemplo JTable ResultSet Exemplo JTable ResultSet AtualizávelAtualizável
public String getColumnName(int coluna) {String nomeColuna = "";try {
nomeColuna = estrutura.getColumnName(coluna + 1);} catch (SQLException e) {
e.printStackTrace();}return nomeColuna;
}public void setValueAt(Object value, int linha, int coluna) {
try {rs.absolute(linha + 1);rs.updateObject(coluna + 1, value);rs.updateRow();
} catch (SQLException e) {e.printStackTrace();
}}public boolean isCellEditable(int linha, int coluna) {
//Coluna Id não deve ser editávelif (coluna == 0) {
return false;}return true;
}
![Page 200: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/200.jpg)
200
Exemplo JTable ResultSet Exemplo JTable ResultSet AtualizávelAtualizável
public void addRow(Object[] linha) {try {
rs.moveToInsertRow();for (int cont = 0; cont < linha.length; cont++) {
rs.updateObject(cont + 2, linha[cont]);}rs.insertRow();//Atualiza a tabelafireTableDataChanged();
} catch (SQLException e) {e.printStackTrace();
}}public void removeRow(int linha) {
try {rs.absolute(linha + 1);rs.deleteRow();//Atualiza a tabelafireTableRowsDeleted(linha, linha);
} catch (SQLException e) {e.printStackTrace();
}}
}
![Page 201: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/201.jpg)
201
Cores, Desenhos e Fontes
Color
Graphics
Font / FontMetrics
![Page 202: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/202.jpg)
202
Color (java.awt.Color)
Principais Construtores ColorColor ( float r, float g, float b ) ColorColor ( float r, float g, float b, float a )
ColorColor ( int r, int g, int b ) ColorColor ( int r, int g, int b, int a )
ColorColor ( int rgb ) ColorColor ( int rgb, boolean hasalpha )
bits: 24-31=alpha; 16-23=red;8-15=green; 0-7=blue
Valores entre
0.0f e 1.0fValores entre
0 e 255
![Page 203: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/203.jpg)
203
Color (java.awt.Color)
Principais Campos
yellow255, 255, 0
white255, 255, 255
redred255, 0, 0255, 0, 0
pinkpink255, 175, 255, 175, 175175
orangeorange255, 200, 0255, 200, 0
magentamagenta255, 0, 255255, 0, 255
lightGray192, 192, 192
greengreen0, 255, 00, 255, 0
graygray128, 128, 128, 128, 128128
darkGraydarkGray64, 64, 6464, 64, 64
cyan0, 255, 255
blueblue0, 0, 2550, 0, 255
blackblack0, 0, 00, 0, 0
![Page 204: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/204.jpg)
204
Color (java.awt.Color)
Principais Métodos Color brighterbrighter ( )
Cria uma nova cor mais clara. Color darkerdarker ( )
Cria uma nova cor mais escura.
int getAlphagetAlpha ( ) int getBluegetBlue ( ) int getGreengetGreen ( ) int getRedgetRed ( ) int getRGBgetRGB ( )
Retorna o valor do campo determinado.
Não possuimétodos set
![Page 205: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/205.jpg)
205
Font (java.awt.Font)
Construtores FontFont ( Map atributos )
FontFont ( String nome, int estilo, int tamanho
)
Principais Campos BOLD
ITALIC
PLAIN
![Page 206: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/206.jpg)
206
Font (java.awt.Font)
Principais Métodos String getFontNamegetFontName ( )
Retorna o nome do font face. String getNamegetName ( )
Retorna o nome lógico da fonte. int getSizegetSize ( )
Retorna o tamanho em pontos da fonte. int getStylegetStyle ( )
Retorna o estilo da fonte. boolean isBoldisBold ( )
indica se o estilo da fonte é BOLD. boolean isItalicisItalic ( )
indica se o estilo da fonte é ITALIC. boolean isPlainisPlain ( )
indica se o estilo da fonte é PLAIN.
![Page 207: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/207.jpg)
207
Font (java.awt.Font)
Nomes Lógicos de FontesNomes Lógicos de Fontes Dialog DialogInput Monospaced SansSerif Serif
Exemplo de definição de Font de um
componente:Font f1 = new Font ( “Serif”, Font.BOLD, 14 );Button btn = new Button ( “Oi tudo bem”);btn.setFont ( f1 );
![Page 208: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/208.jpg)
208
Font (java.awt.Font)
import java.awt.*;import javax.swing.*;
public class FontComp extends JFrame {public FontComp( ) {
setTitle("Tipo de Fonte do Componente");Font f = new Font ("SansSerif", Font.BOLD+Font.ITALIC,
20);JButton btn = new JButton ("krikaki");btn.setFont ( f );getContentPane().add ( btn, "North" );pack();setVisible(true);
}}
Exemplo que Exemplo que mostra como mostra como
alterar a fonte de alterar a fonte de um componenteum componente
![Page 209: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/209.jpg)
209
Font (java.awt.Font)
import java.awt.*;class Fontes extends Frame {
public Fontes(){setTitle("Tipos de Fontes");List lst = new List();lst.setBackground(Color.lightGray);String fontfamily[] = GraphicsEnvironment.GraphicsEnvironment.
getLocalGraphicsEnvironment().getLocalGraphicsEnvironment(). getAvailableFontFamilyNames();getAvailableFontFamilyNames();
for (int x=0; x< fontfamily.length; x++) lst.add(fontfamily[x]);
add(lst);pack();setVisible(true);
}}
Classe para obter Classe para obter as fontes as fontes
instaladas no instaladas no computador localcomputador local
![Page 210: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/210.jpg)
210
Alteração de Look And Feel
import javax.swing.*;public class TestaGUI extends JFrame {
public TestaGUI() { add(new JButton("Oi tudo bem"), "North");pack(); setVisible(true);
} public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
// UIManager.getCrossPlatformLookAndFeelClassName()//"com.sun.java.swing.plaf.motif.MotifLookAndFeel"
//"javax.swing.plaf.metal.MetalLookAndFeel" //"com.sun.java.swing.plaf.gtk.GTKLookAndFeel"//"com.sun.java.swing.plaf.windows.WindowsLookAndFeel"
new TestaGUI(); }
}
![Page 211: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/211.jpg)
211
Manipulação de Eventos
Eventos de Ação
Eventos de Janela
Eventos de Mouse
![Page 212: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/212.jpg)
212
Eventos de Ação
Interface ActionListener Método
actionPerformed
Não possui classe adaptadora
Eventos gerados por: Button
List
MenuItem
TextField
![Page 213: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/213.jpg)
213
Eventos de Açãoimport java.awt.*;import java.awt.event.*;import javax.swing.*;
public class AcaoBtn1 extends JFrame {JButton btn;public AcaoBtn1 ( ) {
btn = new JButton ("Botão de Comando" );btn.addActionListener addActionListener ( new ActionListenerActionListener( ) {
public void actionPerformedactionPerformed ( ActionEventActionEvent evt ) {btn.setBackground ( Color.red );
}} );add ( btn, "North" );setVisible( true );
}public static void main (String args[ ]) {
new AcaoBtn1( );}
}
Ação de umAção de um
Botão 1Botão 1
![Page 214: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/214.jpg)
214
Eventos de Açãoimport java.awt.*;import java.awt.event.*;import javax.swing.*;
public class AcaoBtn2 extends JFrame implements implements ActionListenerActionListener {JButton btn;public AcaoBtn2 ( ) {
btn = new JButton ("Botão de Comando" );btn.addActionListeneraddActionListener ( thisthis ) ;add( btn, "North" );setVisible ( true );
}public void actionPerformed ( ActionEventActionEvent evt ) {
ObjectObject source = evt.getSourceevt.getSource( );if ( source == btn )
btn.setBackground(Color.red);}public static void main (String args[ ]) {
new AcaoBtn2( );}
}
Ação de umAção de um
Botão 2Botão 2
![Page 215: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/215.jpg)
215
Exercício Implementar a funcionalidade do
programa de cálculos.
![Page 216: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/216.jpg)
216
Eventos de Janela Interface WindowListener
Métodos windowClosing windowOpened windowIconified windowDeiconified windowClosed windowActivated windowDeactivated
Classe adaptadora: WindowAdapterWindowAdapter
![Page 217: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/217.jpg)
217
Eventos de Janelaimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class FechaFrame extends JFrame {
public FechaFrame ( ) { setTitle ( "Oi Tudo Bem" );
setSize (300, 200); setDefaultCloseOperationsetDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSDO_NOTHING_ON_CLOSEE); addWindowListeneraddWindowListener ( new WindowAdapterWindowAdapter ( ) {
public void windowClosingwindowClosing ( WindowEventWindowEvent e ) { int resp = JOptionPane.showConfirmDialog(null, "Deseja
sair ?"); if ( resp == JOptionPane.YES_OPTION )
System.exit ( 0 ); }
} ); setVisible ( true );}public static void main ( String args [ ] ) { new FechaFrame( );}
}
FechamentoFechamento
de Janelade Janela
![Page 218: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/218.jpg)
218
Eventos de Janelaimport java.awt.event.*;import javax.swing.*;public class EventosJanela extends JFrame { public EventosJanela() {
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);addWindowListener(new WindowListener() { public void windowClosing (WindowEvent e) {
int resp = JOptionPane.showConfirmDialog(null, "Deseja sair ?");if (resp == JOptionPane.YES_OPTION)
System.exit(0); } public void windowOpened (WindowEvent arg0) {
System.out.println("Janela Aberta!"); } public void windowClosed (WindowEvent arg0) {
System.out.println("Janela Fechada!"); }
![Page 219: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/219.jpg)
219
Eventos de Janela public void windowIconified (WindowEvent arg0) {
System.out.println("Janela Minimizada!"); } public void windowDeiconified (WindowEvent arg0) {
System.out.println("Janela Restaurada!"); } public void windowActivated (WindowEvent arg0) {
System.out.println("Janela Ativada!"); } public void windowDeactivated (WindowEvent arg0) {
System.out.println("Janela Desativada!"); }});setVisible(true);
}
public static void main(String args[]) { new EventosJanela();
}}
![Page 220: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/220.jpg)
220
JColorChooser (javax.swing.JColorChooser)
import java.awt.*;import java.awt.event.*;import javax.swing.*;
public class DialogoCor extends JFrame implements ActionListener {JButton btn;public DialogoCor() {
btn = new JButton("krikaki");btn.addActionListener(this);getContentPane().add(btn, "West");pack();setVisible(true);
}public void actionPerformed(ActionEvent e) {
Color corAtualcorAtual = btn.getBackground();Color novaCornovaCor = JColorChooser.showDialogshowDialog(DialogoCor.this,
"Escolha a cor", corAtualcorAtual);btn.setBackground(novaCor);
}public static void main ( Stirng args [ ] ) {
new DialogoCor ( );}
}
![Page 221: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/221.jpg)
221
Eventos de Mouse Interface MouseListener
Métodos mousePressed mouseReleased mouseEntered mouseExited mouseClicked
Classe adaptadora: MouseAdapterMouseAdapter
Interface MouseMotionListener Métodos
mouseDragged mouseMoved
Classe adaptadora: MouseMotionAdapterMouseMotionAdapter
![Page 222: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/222.jpg)
222
Eventos de Mouseimport java.awt.*;import java.awt.event.*;import javax.swing.*;
public class Botao extends JFrame {JButton btn;public Botao ( ) {
btn = new JButton ("Passe o mouse aqui !");btn.addMouseListeneraddMouseListener ( new MouseAdapterMouseAdapter ( ) {
public void mouseEnteredmouseEntered ( MouseEvent evt ) {btn.setBackground ( Color.yellow );
}public void mouseExitedmouseExited ( MouseEvent evt ) {
btn.setBackground ( Color.red );}
} );add ( btn, "South" );setVisible ( true );
}public static void main ( Stirng args [ ] ) {
new Botao ( );}
}
Eventos de Eventos de Mouse no BotãoMouse no Botão
![Page 223: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/223.jpg)
223
Eventos de Teclado
![Page 224: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/224.jpg)
224
Exemplo: Várias Janelasimport java.awt.*;import java.awt.event.*;import javax.swing.*;
public class Janelas extends JFrame implements ActionListener {JFrame fr1, fr2;JButton btnFr1, btnFr2, btnVolta1, btnVolta2;public Janelas() {
setTitle("Janela Principal");btnFr1 = new JButton("Chama Janela 1");btnFr1.addActionListener(this);btnFr2 = new JButton("Chama Janela 2");btnFr2.addActionListener(this);add(btnFr1, "North");add(btnFr2, "South");
![Page 225: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/225.jpg)
225
Exemplo: Várias Janelasfr1 = new JFrame("Janela 1");fr1.setBounds(100, 100, 300, 100);fr1.getContentPane().setBackground(Color.yellow);btnVolta1 = new JButton("Voltar");fr1.add(btnVolta1, "South");btnVolta1.addActionListener(this);
fr2 = new JFrame("Janela 2");fr2.setBounds(200, 200, 300, 100);fr2.getContentPane().setBackground(Color.green);btnVolta2 = new JButton("Voltar");fr2.add(btnVolta2, "South");btnVolta2.addActionListener(this);
setSize(300, 200);setVisible(true);
}
![Page 226: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/226.jpg)
226
Exemplo: Várias Janelaspublic void actionPerformed(ActionEvent evt) {
Object btn = evt.getSource();if (btn == btnFr1) {
setVisible(false);fr1.setVisible(true);
}if (btn == btnFr2) {
setVisible(false);fr2.setVisible(true);
}if (btn == btnVolta1) {
setVisible(true);fr1.setVisible(false);
}if (btn == btnVolta2) {
setVisible(true);fr2.setVisible(false);
}}public static void main(String[] args) {
new Janelas();}
}
![Page 227: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/227.jpg)
227
Exemplo: Várias Janelaspublic void actionPerformed(ActionEvent evt) {
Object btn = evt.getSource();if (btn == btnFr1) {
setVisible(false);fr1.setVisible(true);
}if (btn == btnFr2) {
setVisible(false);fr2.setVisible(true);
}if (btn == btnVolta1) {
setVisible(true);fr1.setVisible(false);
}if (btn == btnVolta2) {
setVisible(true);fr2.setVisible(false);
}}public static void main(String[] args) {
new Janelas();}
}
![Page 228: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/228.jpg)
228
Exemplo: Botão Personalizadoimport java.awt.*;import java.awt.event.*;import javax.swing.*;public class MeuBotão extends JButton {
String texto;Font letra;Color frente, fundo, realce;public MeuBotão(String texto, Font letra, Color frente, Color fundo, Color realce){ super(texto); this.texto = texto; this.letra = letra; this.frente = frente; this.fundo = fundo; this.realce = realce;
![Page 229: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/229.jpg)
229
Exemplo: Botão Personalizado setFont(letra); setForeground(frente); setBackground(fundo); addMouseListener(new MouseAdapter() { public void mouseEntered(MouseEvent evt) { setBackground(MeuBotão.this.realce); Font letra = MeuBotão.this.letra; letra = new Font(letra.getFamily(), letra.getStyle(), letra.getSize() + 5); MeuBotão.this.setFont(letra); } public void mouseExited(MouseEvent evt) { setBackground(MeuBotão.this.fundo); MeuBotão.this.setFont(MeuBotão.this.letra); } });}
}
![Page 230: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/230.jpg)
230
Tipos de Cursor (java.awt.Cursor) CROSSHAIR_CURSOR
Cursor em formato de cruz. CUSTOM_CURSOR
Cursor personalizado. DEFAULT_CURSOR
Cursor default E_RESIZE
Redimensionamento Leste HAND_CURSOR
Cursor em formato de mão MOVE_CURSOR
Cursor de movimentação N_RESIZE_CURSOR
Redimensionamento Norte
![Page 231: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/231.jpg)
231
Tipos de Cursor (java.awt.Cursor) NE_RESIZE_CURSOR
Redimensionamento Nordeste NW_RESIZE_CURSOR
Redimensionamento Noroeste S_RESIZE_CURSOR
Redimensionamento Sul SE_RESIZE_CURSOR
Redimensionamento Sudeste SW_RESIZE_CURSOR
Redimensionamento Sodoeste TEXT_CURSOR
Texto W_RESIZE_CURSOR
Redimensionamento Oeste WAIT_CURSOR
Cursor de pausa
![Page 232: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/232.jpg)
232
Exemplo de Tipos de Cursorimport java.awt.*;import javax.swing.*;public class Cursores extends JFrame {
public Cursores() {setLayout(new FlowLayout());JButton btn1 = new JButton("Cruz");JButton btn2 = new JButton("Mão");JButton btn3 = new JButton("Movimento");JButton btn4 = new JButton("Texto");JButton btn5 = new JButton("Espera");btn1.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));btn2.setCursor(new Cursor(Cursor.HAND_CURSOR));btn3.setCursor(new Cursor(Cursor.MOVE_CURSOR));btn4.setCursor(new Cursor(Cursor.TEXT_CURSOR));btn5.setCursor(new Cursor(Cursor.WAIT_CURSOR));
![Page 233: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/233.jpg)
233
Exemplo de Tipos de Cursorcp.add(btn1);cp.add(btn2);
cp.add(btn3);cp.add(btn4);cp.add(btn5);pack();setVisible(true);
}
public static void main(String[] args) {new Cursores( );
}}
![Page 234: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/234.jpg)
234
Exemplo de Cursor Personalizadoimport java.awt.*; import javax.swing.*; public class CursorPessoal extends JFrame {
JButton btn; public CursorPessoal() {
Toolkit tk = Toolkit.getDefaultToolkit(); Image img = tk.getImage("imagem.gif"); setIconImage(img); Cursor cursor = tk.createCustomCursor(img, new Point(20, 20),
"Oi"); btn = new JButton("krikaki"); btn.setToolTipText("Oi tudo bem"); btn.setCursor(cursor); add(btn, "North"); setBounds(100,100, 200, 300); setVisible(true);
} public static void main(String[] args) { new CursorPessoal();
} }
![Page 235: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/235.jpg)
235
Tratamento de Exceções
![Page 236: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/236.jpg)
236
Tratamento de Exceçõesimport java.awt.*;import java.awt.event.*;import javax.swing.*;
public class Excecao extends JFrame implements ActionListener {JRadioButton divide, badCast, arrayBounds, nullPointer;public Excecao(){
Container cp = getContentPane();cp.setLayout(new GridLayout(7, 1));ButtonGroup g = new ButtonGroup();divide = new JRadioButton("Divisão por zero", false);divide.addActionListener(this);g.add(divide);cp.add(divide);
![Page 237: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/237.jpg)
237
Tratamento de ExceçõesbadCast = new JRadioButton("Cast Inválido", false);badCast.addActionListener(this);g.add(badCast);cp.add(badCast);arrayBounds = new JRadioButton("Índice inválido",
false);arrayBounds.addActionListener(this);g.add(arrayBounds);cp.add(arrayBounds);nullPointer = new JRadioButton("Referência nula", false);nullPointer.addActionListener(this);g.add(nullPointer);cp.add(nullPointer);pack();setVisible(true);
}
![Page 238: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/238.jpg)
238
Tratamento de Exceçõespublic void actionPerformed(ActionEvent evt) {
Object source = evt.getSource();trytry { if (source == divide) {
int a = 1, b; b = 5 / (a - a);} else if (source == badCast) {
Frame f = (Frame) evt.getSource();} else if (source == arrayBounds) {
int a[] = new int[5]; int b = a[5];} else {
Frame f = null; f.setSize(200, 300); }
} catchcatch (Exception e) {System.out.println("Exceção: " + e); }
}public static void main ( String args [ ] ) {
Excecao oi = new Excecao();}
}
![Page 239: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/239.jpg)
239
Desenhando Formas Geométricas
import java.awt.*;import java.awt.geom.*;import javax.swing.*;public class Desenho extends JFrame { PainelDesenhado painel; public Desenho() { painel = new PainelDesenhado(); add(painel); setBounds(100, 100, 350, 250); setVisible(true); } public static void main(String[] args) { new Desenho(); } class PainelDesenhado extends JPanel { protected void paintComponent(Graphics g) { //super.paintComponent(g); g.setColor(new Color(0, 200, 0)); g.fillRect(0, 0, 300, 200); g.setColor(Color.YELLOW); int x[] = {150, 300, 150, 0, 150}; int y[] = {0, 100, 200, 100, 0}; g.fillPolygon(x, y, 5); g.setColor(new Color(0, 0, 200)); g.fillOval(100, 50, 100, 100); g.setColor(Color.WHITE); for (int cont = 1; cont <= 10; cont++) g.drawArc(100, cont + 80, 100, 50, 0, 180 ); } }}
![Page 240: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/240.jpg)
240
Imagens Como ler um arquivo de imagem:
Toolkit tk = Toolkit.getDefaultToolkit ( )getDefaultToolkit ( ) ;
// Arquivo Local:
Image imgimg = tk.getImagegetImage (“nomearq.gif”);
// Imagem na Internet:
URL u = new URL ("http://www.algumlugar.com/umaImg.gif");
Image imgimg = tk.getImagegetImage ( u );
Como alterar o ícone de uma Frame:setIconImage ( imgimg );
![Page 241: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/241.jpg)
241
Imagens Como carregar uma imagem através de
um observador de imagens (ImageObserver):
ToolkitToolkit tk = Toolkit.getDefaultToolkit ( );getDefaultToolkit ( );
ImageImage img = tk.getImagegetImage ("nomearq.gif");
MediaTrackerMediaTracker mt = new MediaTrackerMediaTracker (this);mt.addImageaddImage (img, 0);
try {mt.waitForIDwaitForID ( 0 );
} catch (InterruptedException e) { }
![Page 242: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/242.jpg)
242
Imagens (exemplo)
import java.awt.*;
public class TestPanelImg extends Frame {public TestPanelImg(String nomearq) {
setTitle ("Teste de Imagem");Panel p1 = new PanelImg (nomearq); add(p1);setBounds(100, 100, 200, 200);setVisible(true);
}public static void main (String args[ ] ) {
TestPanelImg oi = new TestPanelImg(args[0]);}
}
![Page 243: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/243.jpg)
243
Imagens (exemplo)
class PanelImg extends Panel {Image img;public PanelImg (String nomearq) {
img = Toolkit.getDefaultToolkit( ).getImage(nomearq);MediaTracker mt = new MediaTracker(this);mt.addImage (img, 0); // Carrega a imagemtry {
mt.waitForID (0); // Aguarda pelo carregamento} catch ( InterruptedException e ) { }
}public void paint ( Graphics g ) {
super.paint ( g );Dimension d = getSize();int largura = d.width;int altura = d.height;g.drawImage(img, 0, 0, largura, altura, this);
}}
![Page 244: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/244.jpg)
244
Imagens (exemplo 2)
import java.awt.*; import java.awt.event.*;import java.io.File; import javax.swing.*;
public class ViewImageFile extends JFrame implements ActionListener {PanelImg pImage; JButton btnFile;public ViewImageFile() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setTitle("Visualizador de Imagens");pImage = new PanelImg(null);btnFile = new JButton("Carrega Arquivo");btnFile.addActionListener(this);Container cp = getContentPane();cp.add(pImage, BorderLayout.CENTER);cp.add(btnFile, BorderLayout.SOUTH);setBounds(100, 100, 300, 300);setVisible(true);
}
![Page 245: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/245.jpg)
245
Imagens (exemplo 2)
public void actionPerformed(ActionEvent e) { File arquivo = null; JFileChooser fc = new JFileChooser(); if (fc.showOpenDialog(this) == 0) { arquivo = fc.getSelectedFile(); String nomearq = arquivo.getAbsolutePath(); pImage.load(nomearq); }
}public static void main(String[] args) {
new ViewImageFile();}
![Page 246: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/246.jpg)
246
Imagens (exemplo 2)
class PanelImg extends Panel {Image img;public PanelImg (String nomearq) {
if (nomearq != null)load(nomearq);
}public void load(String nomearq) {
img = Toolkit.getDefaultToolkit().getImage(nomearq);MediaTracker mt = new MediaTracker(this);mt.addImage (img, 0); // Carrega a imagemtry {
mt.waitForID (0); // Aguarda pelo carregamento} catch ( InterruptedException e ) { }
}
![Page 247: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/247.jpg)
247
Imagens (exemplo 2)
public void paint ( Graphics g ) {super.paint ( g );Dimension d = getSize();int largura = d.width;int altura = d.height;g.drawImage(img, 0, 0, largura, altura, this);
}}
}
![Page 248: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/248.jpg)
248
Menus Barra de Menus (javax.swing.JMenuBar)
JMenuBar Menus (javax.swing.JMenu)
JMenu Itens de Menus (javax.swing.JMenuItem)
JMenuItem Separadores
addSeparator ( ) Adição da Barra de Menus à Frame
JFrame.setJMenuBar ( )
![Page 249: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/249.jpg)
249
Menus Abilitar e Desabilitar Itens de Menus
setEnablesetEnable ( ) Ícones em Itens de Menus
setIconsetIcon ( ) JMenuItem item = new JMenuItemJMenuItem (“Cut”, new ImageIcon ( “cut.gif”
); Mnemônicos em Itens de Menus
setMnemonicsetMnemonic ( )item.setMnemonic ( ´C´ );
Teclas de Atalho em Itens de Menus setAcceleratorsetAccelerator ( )
item.setAccelerator ( KeyStroke.getKeyStroke ( KeyEvent.VK_C, InputEvent.CTRL_MASK) );
![Page 250: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/250.jpg)
250
Menus Caixas de Seleção em Itens de Meuns
JCheckBoxMenuItem (javax.swing.JCheckBoxMenuItem)
JCheckBoxMenuItem item = new JCheckBoxMeunItem ("Ready" );menu.add ( item );
Botões de Rádio em Itens de Menus ButtonGroup (javax.swing.ButtonGroup)
JRadioButtonMenuItem (javax.swing.JRadioButtonMenuItem)
ButtonGroup bg = new ButtonGroup ( );JRadioButtonMenuItem mitem = new JRadioButtonMenuItem ("Masc" );mitem.setSelected ( true );JRadioButtonMenuItem fitem = new JRadioButtonMenuItem ("Fem" );bg.add ( mitem );bg.add ( fitem );menu.add ( mitem );menu.add ( fitem );
![Page 251: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/251.jpg)
251
Menus (javax.swing.JMenu)class MeuMenu extends JFrame implements ActionListener {
public MeuMenu ( ) {JMenuBar barraMenu = new JMenuBar ( );JMenu editMenu = new JMenu ("Edit" );JMenuItem item1 = new JMenuItem ("Paste" );item1.addActionListener ( this );editMenu.add ( item1 );editMenu.addSeparator ( );JMenuItem item2 = new JMenuItem ("Copy" );item2.addActionListener ( this );editMenu.add ( item2 );barraMenu.add ( editMenu );setJMenuBar ( barraMenu );show( );
}public void actionPerformed ( ActionEvent evt ) {}
}
Importar: java.awt.*java.awt.event.*javax.swing.*
![Page 252: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/252.jpg)
252
Menus Menus Flutuantes (pop-up)
JPopupMenu (javax.swing.JPopupMenu)btn = new JButton ("Oi tudo bem");getContentPane().add (btn, "South");itemAzul = new JMenuItem ( "Azul" );itemAzul.addActionListener ( this );itemVermelho = new JMenuItem ( "Vermelho" );itemVermelho.addActionListener ( this );popup = new JPopupMenu();popup.add ( itemAzul );popup.add ( itemVermelho );btn.addMouseListener ( new MouseAdapter ( ) {
public void mouseReleased ( MouseEvent evt ) {
if ( evt.isPopupTrigger() ) popup.show ( evt.getComponent(),
evt.getX(), evt.getY() );}
} );
![Page 253: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/253.jpg)
253
Mini-aplicativos - Applets
![Page 254: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/254.jpg)
254
Applet (java.applet.Applet)
Conceito e UtilizaçãoUma applet é uma classe Java executada dentro de um browser Web.
SegurançaUma applet não pode acessar os recursos locais de uma máquina. Como executar programas locais, se comunicar com outro computador a não ser o hospedeiro de origem, ler nem gravar no sistema de arquivos local, descobrir nomes de usuários ou endereços de e-mail.
![Page 255: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/255.jpg)
255
Applet (java.applet.Applet) Métodos Particulares
init ( )init ( )Executado apenas uma vez após a carga da applet pelo browser. Utilizado para inicializar dados.
start ( )start ( )Executado após init( ) e a cada vez que o applet se tornar ativo.
stop ( )stop ( )Executado toda vez que o applet tiver de ser desativado. Quando a página não for a ativa.
destroy ( )destroy ( )Executado toda vez que a applet for completamente descartada. Utilizado para liberar recursos.
paint ( Graphics paint ( Graphics g))Executado toda vez que a applet precisar ser desenhada.Quando a applet possuir componentes de interface gráfica, é recomendável chamar o método paintComponents().paintComponents().
![Page 256: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/256.jpg)
256
Applet – Arquivo HTML<html>
<body>
<appletapplet code="TestappTestapp" width=300 height=200 >
<paramparam name= "b1" value = "Anterior " >
<paramparam name= "b2" value = "Próximo" >
Este browser não suporta applets
</applet/applet>
</body>
</html>
![Page 257: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/257.jpg)
257
Applet – Código da Classeimport java.awt.*;import javax.swing.*;
public class Testapp extends JApplet {JButton btn1, btn2;public void init ( ) {
Container cp = getContentPane();String textob1 = getParameter ("b1");String textob2 = getParameter ("b2");btn1 = new JButton(textob1);btn2 = new JButton(textob2);cp.add(btn1, "North");cp.add(btn2, "South");
}public void paint ( Graphics g ) {
paintComponents(g);g.drawString ("Oi tudo bem", 100, 100);
}}
![Page 258: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/258.jpg)
258
Exercício
Transformar o programa de cálculos em uma applet.
![Page 259: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/259.jpg)
259
Manipulação de Arquivos do Sistema de Arquivos – java.io
![Page 260: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/260.jpg)
260
Gravação de dados em arquivo textoimport java.io.*;import javax.swing.*;public class GravaDados {
public static void main(String[] args) {try {
FileOutputStream out = new FileOutputStream("dados.txt");String texto = JOptionPane.showInputDialog(null,
"Qual o texto a gravar?");byte[] b = texto.getBytes();out.write(b);out.close();
} catch (FileNotFoundException e) {e.printStackTrace();
} catch (IOException ex) {ex.printStackTrace();
}}
}
![Page 261: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/261.jpg)
261
Leitura de dados de arquivo textoimport java.io.*;
public class LeDados {public static void main(String[] args) {
try {FileInputStream in = new FileInputStream("dados.txt");int ch;while ((ch = in.read()) != -1)
System.out.print((char)ch);in.close();
} catch (FileNotFoundException e) {e.printStackTrace();
} catch (IOException ex) {ex.printStackTrace();
}}
}
![Page 262: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/262.jpg)
262
Gravando dados em arquivo texto (como objetos)
import java.io.*;import javax.swing.*;public class GravaObjetos {
public static void main(String[] args) {try { FileOutputStream fos = new FileOutputStream("dados.txt");
ObjectOutputStream out = new ObjectOutputStream(fos);for (int cont = 1; cont <= 3; cont++) {
String nome = JOptionPane.showInputDialog("Digite o nome");String rg = JOptionPane.showInputDialog("Digite o Rg");Pessoa pessoa = new Pessoa();pessoa.setNome(nome);pessoa.setRg(rg);out.writeObject(pessoa);
}out.close();JOptionPane.showMessageDialog(null, "Dados Gravados");
} catch (FileNotFoundException e) {e.printStackTrace();
} catch (IOException ex) {ex.printStackTrace();
}}
}
![Page 263: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/263.jpg)
263
Lendo dados de arquivo texto (como objetos)
import java.io.*;import javax.swing.JOptionPane;public class LeObjetos {
public static void main(String[] args) {try {
FileInputStream fis = new FileInputStream("dados.txt");ObjectInputStream in = new ObjectInputStream(fis);Pessoa pessoa = new Pessoa();while ( (pessoa = (Pessoa) in.readObject()) != null)
System.out.println(pessoa.getNome() + " - " + pessoa.getRg());in.close();fis.close();
} catch (FileNotFoundException e) {JOptionPane.showMessageDialog(null, "Arquivo não encontrado");
} catch (EOFException e) {JOptionPane.showMessageDialog(null, "Leitura completada");
} catch (IOException ex) {ex.printStackTrace();
} catch (ClassNotFoundException e) {e.printStackTrace();
}}
}
![Page 264: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/264.jpg)
264
Conectividade de Banco de Dados(JDBC)
![Page 265: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/265.jpg)
265
Conectividade de Banco de Dados
Arquitetura JDBC
Introdução à Linguagem SQL
Configuração ODBC
Etapas da Programação JDBC
Uso do MySQL
API – JDBC
Manutenção de Tabelas de Banco de Dados
![Page 266: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/266.jpg)
266
Conectividade de Banco de Dados
Arquitetura JDBC
Programa JavaAPI JDBC(java.sql)
Driver JDBC
BancoDe Dados
Comandos SQL
![Page 267: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/267.jpg)
267
Introdução à Linguagem SQL
Consulta SELECT
Alteração INSERT INTO
UPDATE
DELETE FROM
![Page 268: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/268.jpg)
268
Introdução à Linguagem SQL
SELECT
SELECTSELECT colunas FROMFROM tabelas WHEREWHERE critério
Exemplos:SELECT * FROM cliente
SELECT Nome, Tel FROM Cliente
SELECT Nome FROM Cliente WHERE Estado = ‘SP’
SELECT Nome, Tel FROM Cliente WHERE Nome LIKE ‘João%’
SELECT Cliente.Nome, Pedido.NumPed FROM Cliente, Pedido WHERE Cliente.CodCli = Pedido.CodCli
![Page 269: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/269.jpg)
269
Introdução à Linguagem SQL
INSERT INTO
INSERT INTOINSERT INTO tabela (nomeCol1, nomeCol2...)
VALUESVALUES (valor1, valor2...)
Exemplos:INSERT INTO Cliente ( CodCli, Nome ) VALUES ( ‘001’,
‘CIM Alcina’ )
INSERT INTO Pedido ( NumPed, Data ) VALUES ( ‘031/01’,
TO_DATE (’13-MAR-2001’, ‘DD-MON-YYYY’ ) )
![Page 270: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/270.jpg)
270
Introdução à Linguagem SQL
UPDATE
UPDATEUPDATE tabela SETSET nomeCol1 = valor1,
nomeCol2 = valor2... WHEREWHERE critério
Exemplos:
UPDATE Pedido SET Preço = Preço * 1.1
UPDATE Pedido SET Preço = Preço * 0.85
WHERE CodProd = ‘XYZ’
![Page 271: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/271.jpg)
271
Introdução à Linguagem SQL
DELETE FROM
DELETEDELETE FROMFROM tabela WHEREWHERE critério
Exemplos:
DELETE FROM Cliente WHERE CodCli = ‘001’
DELETE FROM Pedido WHERE Data < TO_DATE (’13-
MAR-2001’, ‘DD-MON-YYYY’ )
![Page 272: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/272.jpg)
272
Mapeamento java.sql.Types para Java
long BIGINT
java.lang.String VARCHAR
java.lang.String CHAR
java.math.BigDecimal NUMERIC
java.math.BigDecimal DECIMAL
double DOUBLE
double FLOAT
float REAL
int INTEGER
short SMALLINT
byte TINYINT
boolean BIT
Tipo JavaTipo JavaTipo SQL Tipo SQL (java.sql.Types)(java.sql.Types)
![Page 273: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/273.jpg)
273
Mapeamento java.sql.Types para Java (cont.)
byte[ ] BINARY
java.sql.Struct STRUCT
java.sql.Ref REF
java.sql.Array ARRAY
java.sql.Clob CLOB
java.sql.Blob BLOB
byte[ ] LONGVARBINARY
byte[ ] VARBINARY
java.sql.Timestamp TIMESTAMP
java.sql.Time TIME
java.sql.Date DATE
java.lang.String LONGVARCHAR
Tipo JavaTipo JavaTipo SQL Tipo SQL (java.sql.Types)(java.sql.Types)
![Page 274: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/274.jpg)
274
Conectividade de Banco de Dados
Configuração ODBC ( Windows )Painel de Controle / Fontes de Dados ODBC (32
bits)
Você deve configurar os seguintes itens: Driver Nome da Fonte de Dados Banco de Dados correspondente
Opcionalmente definir: Nome de Logon Senha de acesso
![Page 275: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/275.jpg)
275
Conectividade de Banco de Dados
Etapas da Programação JDBC1. Importar java.sql.*2. Carregar Driver JDBC3. Especificar um Banco de Dados4. Abrir uma conexão com o Banco de
Dados5. Criar um Statement (comando)6. Submeter um comando SQL7. Receber os resultados
![Page 276: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/276.jpg)
276
Conectividade de Banco de Dados
Etapa 1 – Importar o Pacote java.sqlimport java.sql.*;import java.sql.*;
Etapa 2 – Carregar Driver JDBC (Depende do Banco de Dados)
Carga dinâmica da classe com o método Class.forName:Class.forName ( “sun.jdbc.odbc.JdbcOdbcDriver” );Class.forName ( “sun.jdbc.odbc.JdbcOdbcDriver” );
Instanciação de um objeto para forçar a carga da classe:new sun.jdbc.odbc.JdbcOdbcDriver ( );
Atribuição a variáveis do sistema com a opção –D:java –Djdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver programa
![Page 277: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/277.jpg)
277
Conectividade de Banco de Dados
Etapa 3 – Criar uma url de conexão (Depende do Banco de Dados)
Especifica-se um banco de dados através de uma url no seguinte formato:jdbc:subprotocol:subnameonde: jdbc – Protocolo jdbc.
subprotocol – Mecanismo de conexãosubname – Fonte de Dados
Exemplo: String url = “jdbc:odbc:String url = “jdbc:odbc:db1db1”;”;
Etapa 4 – Abrir ConexãoConnection con = DriverManager.getConnection ( url, “user”, Connection con = DriverManager.getConnection ( url, “user”,
“senha” );“senha” );
Fonte de Dados
![Page 278: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/278.jpg)
278
Conectividade de Banco de Dados
Etapa 5 – Criar um Statement (comando)
Statement stmt = con.createStatement ( );Statement stmt = con.createStatement ( );
Etapa 6 – Submeter um comando SQL
Neste exemplo, iremos submeter uma query.
String query = “SELECT * FROM tabela”;String query = “SELECT * FROM tabela”;
ResultSet rs = stmt.executeQuery ( query );ResultSet rs = stmt.executeQuery ( query );
![Page 279: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/279.jpg)
279
Conectividade de Banco de Dados
Etapa 7 – Receber os resultadosNo caso de uma query, o resultado é na forma de um conjunto de linhas (registros) manipulados por métodos da interface ResultSet. Por exemplo, para exibir as linhas deste conjunto, percorre-se todas as linhas através do
método next ( ).
Resultset rs = stmt.executeQuery ( query );Resultset rs = stmt.executeQuery ( query );
while ( rs.next ( ) ) {while ( rs.next ( ) ) {
// primeira coluna// primeira coluna
System.out.println ( rs.getString( 1 ) );System.out.println ( rs.getString( 1 ) );
// segunda coluna// segunda coluna
System.out.println ( rs.getString( 2 ) );System.out.println ( rs.getString( 2 ) );
}}
![Page 280: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/280.jpg)
280
Conectividade de Banco de Dados
import java.sql.*;public class Conexao {
public static void main ( String args [ ] ) { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriversun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:fonteDadosjdbc:odbc:fonteDados"; Connection con = DriverManager.getConnection(url, "usuáriousuário",
"senhasenha"); Statement st = con.createStatement ( ); String sql = "SELECT * FROM nomeTabelanomeTabela ORDER BY
nomeCamponomeCampo"; ResultSet rs = st.executeQuery ( sql ); while ( rs.next() ) {
System.out.println( rs.getString(2) + rs.getString("nomeCamponomeCampo") );
} } catch (Exception e) {
System.out.println ( e ); }}
}
Programa exemplo para testar uma conexão.Exibe os dados de
uma tabela
Usando uma fonte de dados ODBC.
![Page 281: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/281.jpg)
281
Conectividade de Banco de Dados
import java.sql.*;public class Conexao {
public static void main ( String args [ ] ) { try { Class.forName("com.mysql.jdbc.Drivercom.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/nomeBancojdbc:mysql://127.0.0.1:3306/nomeBanco"; Connection con = DriverManager.getConnection(url, "usuáriousuário",
"senhasenha"); Statement st = con.createStatement ( ); String sql = "SELECT * FROM nomeTabelanomeTabela ORDER BY
nomeCamponomeCampo"; ResultSet rs = st.executeQuery ( sql ); while ( rs.next() ) {
System.out.println( rs.getString(2) + rs.getString("nomeCamponomeCampo") );
} } catch (Exception e) {
System.out.println ( e ); }}
}
Programa exemplo para testar uma conexão.Exibe os dados de
uma tabela
Usando o MySQL.
![Page 282: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/282.jpg)
282
Conectividade de Banco de Dados
import java.sql.*;public class Conexao {
public static void main ( String args [ ] ) { try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDrivercom.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://127.0.0.1;" + jdbc:sqlserver://127.0.0.1;" + "databaseName=nomeBanco;" + "databaseName=nomeBanco;" + "user=usuário;password=senha"user=usuário;password=senha"";
Connection con = DriverManager.getConnection(url); Statement st = con.createStatement ( ); String sql = "SELECT * FROM nomeTabelanomeTabela ORDER BY
nomeCamponomeCampo"; ResultSet rs = st.executeQuery ( sql ); while ( rs.next() ) {
System.out.println( rs.getString(2) + rs.getString("nomeCamponomeCampo") );
} } catch (Exception e) {
System.out.println ( e ); }}
}
Programa exemplo para testar uma conexão.Exibe os dados de
uma tabela
Usando o SQLServer2005.
![Page 283: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/283.jpg)
283
Usando o MySQL
Os tópicos a seguir que dizem respeito ao MySQL foram baseados na seguinte bibliografia:
Beginning PHP 4 Programando Wankyu Choi, Allan Kent, Chris Lea, Ganesh
Prasad e Chris Ullman. Makron Books – Wrox Press
SQL Magazine Edição 1 – Ano 1 SGBD no linux: MySQL por Clementino Leal
Java Magazine Edição 7 – Ano 1 Bancos de Dados Livres por Fernando Lozano
![Page 284: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/284.jpg)
284
Instalação do MySQL (no Windows)
O MySQL pode ser obtido no site http://www.mysql.comhttp://www.mysql.com
Descompacte o arquivo mysql-4.0.16-win.zipmysql-4.0.16-win.zip em um diretório qualquer como c:\mysqlinstc:\mysqlinst
Execute o arquivo setup.exesetup.exe, escolha o diretório padrão c:\mysqlc:\mysql e a instalação típicainstalação típica
Abra uma janela do DOS e vá para o diretório c:\c:\mysql\binmysql\bin
Execute o comando winmysqladmin.exewinmysqladmin.exe para que o servidor seja carregado. Na primeira execução desse programa será pedido um nome de usuário e senha.
![Page 285: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/285.jpg)
285
Criação de banco de dados com MySQL Inicie o cliente MySQL monitor:
c:\mysql\bin> mysql –umysql –u<usuário> -p-p<senha> Crie um banco de dados:
mysql > create databasecreate database pessoal; Torne o banco de dados ativo:
mysql > useuse pessoal; Crie uma tabela:
mysql > create tablecreate table agenda (-> id INT NOT NULL AUTO_INCREMENTINT NOT NULL AUTO_INCREMENT,-> nome VARCHARVARCHAR(30),-> telefone VARCHARVARCHAR(30),-> PRIMARY KEYPRIMARY KEY (id)) ;
Insira alguns registros:mysql > INSERT INTOINSERT INTO agenda VALUESVALUES (1, “Maria”, “4444-4444”) ;
Exiba os registros inseridos:mysql > SELECT * FROMSELECT * FROM agenda ORDER BYORDER BY nome ;
Encerre o cliente:mysql > exitexit;
![Page 286: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/286.jpg)
286
Principais tipos de dados no MySQL
AAAAMMDDhhmmssTimestamp TIMESTAMP
AAAA-MM-DD hh:mm:ss
Data e hora DATETIME
AAAA-MM-DDData DATE
Igual a DOUBLEFlutuação String
DECIMAL
±2.225x10-308 a ±1.798x10+308
Flutuante dupla DOUBLE / REAL
±1.176x10-38 a ±3.403x10+38
Flutuante simples
FLOAT
-263 a 263 - 1Inteiro grande BIGINT
-27 a 27 - 1Int. muito peq. TINYINT
-231 a 231 - 1Inteiro normal INT
Intervalo/FormatoIntervalo/FormatoDescriçãoDescriçãoTipo de Tipo de dadodado
![Page 287: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/287.jpg)
287
Principais tipos de dados no MySQL (cont.)
De 0 bytes a 4MB de extensão
Campo de texto longo
LONGTEXT
De 0 65.535 bytes de extensão
Campo de texto
TEXT
De 0 bytes a 4MB de extensão
BLOB de tamanho grande
LONGBLOB
De 0 65.535 bytes de extensão
Objeto binário grande
BLOB
De 0 a 255 caracteres
String de tamanho variável
VARCHAR
De 0 a 255 caracteres
String de tamanho fixo
CHAR
Intervalo/FormatoIntervalo/FormatoDescriçãoDescriçãoTipo de Tipo de dadodado
![Page 288: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/288.jpg)
288
Principais comandos do MySQL monitor
Os comandos devem ser finalizados com “;” CREATE DATABASECREATE DATABASE
Cria um banco de dados. DROP DATABASEDROP DATABASE
Apaga um banco de dados CREATE TABLECREATE TABLE
Cria uma tabela no banco de dados ativo. SHOW DATABASESSHOW DATABASES
Exibe uma lista dos bancos de dados ativos. USEUSE
Seleciona um banco de dados como ativo. SHOW TABLESSHOW TABLES
Exibe as tabelas do banco de dados ativo. EXITEXIT
Encerra o monitor.Além dos comandos SQL padrão.
![Page 289: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/289.jpg)
289
Conexão com MySQL
Instale o driver Connector/J descompactando o arquivo:
mysql-connector-java-3.1.0-alpha.zipmysql-connector-java-3.1.0-alpha.zip, será criado
um diretório com o mesmo nome.
Inclua o arquivo mysql-connector-java-3.1.0-mysql-connector-java-3.1.0-
alpha.jaralpha.jar no Classpath.
Defina o driver em Class.forName ( ) como:
"com.mysql.jdbc.Drivercom.mysql.jdbc.Driver"
Defina a URL de conexão como:
"jdbc:mysql://127.0.0.1:3306/jdbc:mysql://127.0.0.1:3306/banco"
onde banco é o nome do banco de dados.
![Page 290: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/290.jpg)
290
Acesso a dados no MySQL com Eclipse
Para se executar uma aplicação que acesse um banco
de dados MySQL no Eclipse é necessário que se
adicione o arquivo mysql-connector-java-3.1.0-mysql-connector-java-3.1.0-
alpha.jaralpha.jar no classpath do Eclipse.
Para tanto, no Eclipse, Selecione o menu "ProjectProject"
opção "PropertiesProperties", clique em "Java Build PathJava Build Path",
selecione a aba "LibrariesLibraries", clique no botão "Add Add
External Jars...External Jars..." selecione o arquivo mysql-mysql-
connector-java-3.1.0-alpha.jarconnector-java-3.1.0-alpha.jar no diretório onde o
driver Connector/J foi instalado, clique em "abrirabrir" e
finalmente clique em "okok".
![Page 291: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/291.jpg)
291
Usando o Apache Derby Baixe o pacote de distribuição bin do Derby na página:
http://db.apache.org/derby/derby_downloads.html Extraia o pacote baixado no diretório raiz. Renomeie a pasta de instalação para “derby” Adicione o diretório “derby\bin” à variável PATH Mais informações para instalação:
http://db.apache.org/derby/docs/dev/pt_BR/getstart/
![Page 292: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/292.jpg)
292
Exercício
Criar uma interface que grave registros em uma tabela
Agenda
Nome:
Telefone:
Gravar
![Page 293: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/293.jpg)
293
Comandos JDBC (java.sql.Statement)
ConsultaStatementStatement st = con.createStatementcreateStatement( );String sql = "SELECT * FROM tabela WHERE codigo =" + x;ResultSet rs = st.executeQueryexecuteQuery( sql );
InclusãoStatementStatement st = con.createStatementcreateStatement( );String sql = "INSERT INTO tabela (nome, cargo) " +
"VALUES ( ‘ ‘ "+ vNome + " ‘ , ‘ "+ vCargo + " ‘ ) ";int res = st.executeUpdateexecuteUpdate( sql );
![Page 294: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/294.jpg)
294
Comandos preparados JDBC (java.sql.PreparedStatement)
ConsultaString sql = "SELECT * FROM tabela WHERE codigo = ? "; PreparedStatementPreparedStatement pst = con.prepareStatementprepareStatement( sql );pst.setIntsetInt (1, x);ResultSet rs = pst.executeQueryexecuteQuery( );
InclusãoString sql = "INSERT INTO tabela (nome, cargo) " +
"VALUES ( ?, ?) ";
PreparedStatementPreparedStatement pst = con.prepareStatementprepareStatement( sql );pst.setStringsetString (1, vNome);pst.setStringsetString (2, vCargo);int res = pst.executeUpdateexecuteUpdate( );
![Page 295: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/295.jpg)
295
Conjuntos de Resultados ( ResultSet ) Os valores que definem o tipo de um ResultSetResultSet
são especificados no método createStatement ( ) createStatement ( ) ou no método prepareStatement ( ) prepareStatement ( )
Valores de Tipos de conjuntos TYPE_FORWARD_ONLYTYPE_FORWARD_ONLY
Conjunto de resultados não rolável. TYPE_SCROLL_INSENSITIVETYPE_SCROLL_INSENSITIVE
Conjunto de resultados rolável, mas não sensível às alterações do banco de dados.
TYPE_SCROLL_SENSITIVETYPE_SCROLL_SENSITIVEConjunto de resultados rolável e sensível às alterações do banco de dados.
Valores de Concorrência de conjuntos CONCUR_READ_ONLYCONCUR_READ_ONLY
Conjunto de resultado apenas para leitura. CONCUR_UPDATABLECONCUR_UPDATABLE
Conjunto de resultado atualizável.
JDBC 2.0
![Page 296: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/296.jpg)
296
Conjuntos de Resultados Atualizáveis
ResultSet atualizáveis são gerados utilizando-se a concorrência CONCUR_UPDATABLECONCUR_UPDATABLE nos métodos createStatement ( ) createStatement ( ) ou prepareStatement ( )prepareStatement ( ).
Inclusão:Inclusão:rs.moveToInsertRow ( ); // Move o cursor para a linha de inserção.
rs.updateInt (1, 123 ); // Define o valor de uma coluna na linha corrente.rs.updateString(2, "Maria");rs.insertRow ( ); // Insere o conteúdo da linha de inserção no banco de dados.
Alteração:rs.updateString(2, "João"); // Define o valor de uma coluna na linha
corrente.rs.updateRow ( ); // Atualiza o conteúdo da linha corrente no banco
de dados.
Exclusão:Exclusão:rs.deleteRow ( ); // Exclui uma linha.
![Page 297: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/297.jpg)
297
API - JDBC
Interface ConnectionConnection void closeclose ( )
Fecha uma conexão. void commitcommit ( )
Efetiva transação. Statement createStatementcreateStatement ( )
Cria um comando. PreparedStatement prepareStatementprepareStatement (String sql)
Cria um comando preparado. void rollbackrollback ( )
Cancela transação. void setAutoCommitsetAutoCommit ( boolean b )
Define a forma de efetivação dos dados.
![Page 298: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/298.jpg)
298
API - JDBC Classe DriverManagerDriverManager
Connection getConnectiongetConnection ( String url ) Connection getConnectiongetConnection ( String url, String usuário,
String senha )Obtém uma conexão com uma fonte de dados.
Interface StatementStatement void closeclose ( )
Encerra um comando. boolean executeexecute ( )
Executa o comando e retorna true se o resultado for um resultset ou false se for um contador de atualização.
ResultSet executeQueryexecuteQuery ( String comando )Executa um comando de pesquisa e retorna um resultset.
int executeUpdateexecuteUpdate ( String comando )Executa um comando de atualização e retorna o número de linhas atualizadas.
![Page 299: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/299.jpg)
299
API - JDBC
Interface PreparedStatementPreparedStatement void clearParametersclearParameters ( )
Limpa os valores dos parâmetros do comando. boolean executeexecute ( )
Executa o comando e retorna true se o resultado for um resultset ou false se for um contador de atualização.
ResultSet executeQueryexecuteQuery ( )Executa o comando de pesquisa e retorna um resultset.
int executeUpdateexecuteUpdate (String sql)Executa o comando de atualização e retorna a quantidade de linhas atualizadas.
void setXXXsetXXX ( int i, XXX x )Ajusta o valor do parâmetro ii com o valor de xx.
![Page 300: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/300.jpg)
300
API - JDBC
Interface ResultSetResultSet boolean absoluteabsolute ( int row )
Move o cursor para uma determinada linha. void afterLastafterLast ( )
Move o cursor para o final do ResultSet. void beforeFirstbeforeFirst ( )
Move o cursor para o início do ResultSet. void cancelRowUpdatescancelRowUpdates ( )
Cancela as atualizações feitas na linha atual. void closeclose ( )
Fecha o ResultSet.
![Page 301: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/301.jpg)
301
API - JDBC void deleteRowdeleteRow ( )
Exclui uma linha. boolean firstfirst ( )
Move o cursor para a primeira linha do ResultSet. XXX getXXXgetXXX ( int coluna )
Retorna o valor de uma coluna da linha corrente.Onde XXX é tipo de dado.
int getRowgetRow ( )Retorna o número da linha corrente.
void insertRowinsertRow ( )Insere o conteúdo da linha de inserção no banco de dados.
boolean isAfterLastisAfterLast( )Indica se o cursor está após a última linha do ResultSet.
![Page 302: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/302.jpg)
302
API - JDBC boolean isBeforeFirstisBeforeFirst( )
Indica se o cursor está antes da primeira linha do ResultSet. boolean lastlast ( )
Move o cursor para a última linha do ResultSet. void moveToInsertRow ( )
Move o cursor para a linha de inserção boolean nextnext ( )
Move o cursor para a próxima linha do ResultSet. boolean previousprevious ( )
Move o cursor para a linha anterior do ResultSet. boolean relativerelative ( int n )
Move o cursor n linhas, para a frente se n for positivo, ou para trás se n for negativo.
void updateRowupdateRow ( )Atualiza o conteúdo da linha corrente no banco de dados.
void updateXXXupdateXXX (int coluna, XXX dado )Define o valor de uma coluna na linha corrente.Onde XXX é o tipo de dado.
![Page 303: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/303.jpg)
303
Exercício
Criar um simples cadastro de funcionários
Cadastro de Funcionários
Nome:
Cargo:
Salário:
Primeiro
Anterior
Próximo Último
Novo Alterar Excluir Sair
Código:
xxx
![Page 304: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/304.jpg)
304
Java Collections Framework (java.util)
![Page 305: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/305.jpg)
305
API Collections
List
LinkedList ArrayList
Set
HashSet SortedSet
Map
HashMap SortedMap
Collection
TreeSet
TreeMap
Tabela de Hash
Tabela de Hash
Árvore Balanceada
Árvore Balanceada
Array Dimensionável
Lista Ligada
Iterator
ListIterator
![Page 306: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/306.jpg)
306
Comentários sobre Estruturas de Dados Arrays
Acesso a um determinado elemento através de seu índice é feito em tempo constante.
Inserção e exclusão de novos elementos depende da quantidade de elementos já existente no array.
Permite uso de busca binária, se o array estiver classificado, caso contrário, exige busca seqüencial.
Listas Ligadas Inserção e exclusão nas extremidades é feita em tempo
constante(pilhas e filas). Busca seqüencial.
Tabelas de Hash Busca, inserção e exclusão praticamente em tempo
constante. Os elementos não são classificados.
Árvores Binárias Balanceadas de Busca Busca, inserção e exclusão em tempo logarítmico. Os elementos são classificados.
![Page 307: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/307.jpg)
307
Comentários sobre Estruturas de Dados
Listas (LinkedList e ArrayList) Permitem duplicidade de elementos. A ordem de inserção dos elementos é mantida.
Conjuntos (HashSet e TreeSet) Não permitem duplicidade de elementos. A ordem de inserção dos elementos não é mantida.
Mapas (HashMap e TreeMap) Os elementos são associados a uma chave. O acesso aos elementos é feito através da chave, e
não através do próprio elemento. Não há duplicidade de chaves.
![Page 308: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/308.jpg)
308
Interface Collection <E> (java.util.Collection)
Alguns Métodos boolean addadd ( E elemento )
Adiciona um elemento à coleção. void clearclear ( )
Remove todos os elementos da coleção. boolean containscontains ( Object elemento )
Retorna true se o elemento estiver contido na coleção. boolean isEmptyisEmpty ( )
Retorna true se a coleção estiver vazia. Iterator <E> iteratoriterator ( )
Retorna um iterador para a coleção. boolean removeremove ( Object elemento )
Remove um elemento da coleção e o retorna. int sizesize ( )
Retorna a quantidade de elementos na coleção. Object [ ] toArraytoArray ( )
Retorna os elementos da coleção na forma de um array.
![Page 309: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/309.jpg)
309
Exemplo Interface Listimport java.util.*;public class ExemploList {
public static void main(String[] args) {ListList<String> lista = new LinkedListLinkedList<String>();//ListList<String> lista = new ArrayListArrayList<String>();lista.add("Maria");lista.add("José");lista.add("Joaquim");System.out.println(lista.size() + " - " + lista);lista.remove("José");System.out.println(lista.size() + " - " + lista);System.out.println("Primeiro nome: " + lista.get(0));String nome = "Joaquim";System.out.println(nome + " está na posição " +
lista.indexOf(nome));System.out.println(lista.size() + " - " + lista);
}}
![Page 310: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/310.jpg)
310
Classe LinkedList<E> (java.util.LinkedList)
Alguns Construtores LinkedList ( ) LinkedList ( Collection c )
Alguns Métodos void addadd ( int índice, E elemento )
Adiciona um elemento à lista. void addFirstaddFirst ( E elemento )
Adiciona um elemento no início da lista. void addLastaddLast ( E elemento )
Adiciona um elemento no final da lista. E elementelement ( )
Retorna, mas não exclui, o elemento no início da lista. E getget ( int índice )
Retorna um elemento da lista.
![Page 311: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/311.jpg)
311
Classe LinkedList<E> (java.util.LinkedList)
E getFirstgetFirst ( )Retorna o primeiro elemento da lista.
E getLastgetLast ( )Retorna o último elemento da lista.
int indexOfindexOf ( Object elemento )Retorna o índice da primeira ocorrência do elemento, -1 se o elemento não estiver contido na lista.
ListIterator<E> listIteratorlistIterator ( )Retorna o iterador da lista.
E removeremove ( int índice )Remove um elemento da lista e o retorna.
E removeFirstremoveFirst ( )Remove o primeiro elemento da lista e o retorna.
E removeLastremoveLast ( )Remove o último elemento da lista e o retorna.
E setset ( int índice, E elemento )Troca um elemento na lista.
![Page 312: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/312.jpg)
312
Exemplo LinkedListimport java.util.*;
public class ExemploLinkedList {public static void main(String[] args) {
LinkedList<String> lista = new LinkedList<String>();lista.add("Maria");lista.addFirst("José");lista.add("Joaquim");System.out.println(lista.size() + " - " + lista);lista.removeFirst();System.out.println(lista.size() + " - " + lista);System.out.println("Último nome: " + lista.getLast());String nome = "José";System.out.println(nome + " está na posição " +
lista.indexOf(nome));}
}
![Page 313: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/313.jpg)
313
Percurso em uma LinkedListimport java.util.*;public class ExemploLinkedList {
public static void main(String[] args) {LinkedList<String> lista = new LinkedList<String>();lista.add("Maria"); lista.add("José"); lista.add("Joaquim");// Percurso do início para o finalIterator<String> item = lista.iterator();while (item.hasNext()) {
System.out.println(item.next());}for (String elemento : lista) {
System.out.println(elemento);}// Percurso do final para o inícioint tamanho = lista.size();ListIterator<String> itemReverso = lista.listIterator(tamanho);while (itemReverso.hasPrevious()) {
System.out.println(itemReverso.previous());}
}}
![Page 314: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/314.jpg)
314
Classe ArrayList<E> (java.util.ArrayList)
Alguns Construtores ArrayList ( ) ArrayList ( int capacidadeInicial )
Alguns Métodos void addadd ( int índice, E elemento )
Adiciona um elemento à lista. E getget ( int índice )
Retorna um elemento da lista. int indexOfindexOf ( Object elemento )
Retorna o índice da primeira ocorrência do elemento, -1 se o elemento não estiver contido na lista.
E removeremove ( int índice )Remove um elemento da lista e o retorna.
E setset ( int índice, E elemento )Troca um elemento na lista.
![Page 315: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/315.jpg)
315
Classe HashSet<E> (java.util.HashSet)
Alguns Construtores HashSet ( ) HashSet ( int capacidadeInicial )
Alguns Métodos boolean addadd ( E elemento )
Adiciona um elemento à coleção. boolean containscontains ( Object elemento )
Retorna true se o elemento estiver contido na coleção. boolean isEmptyisEmpty ( )
Retorna true se a coleção estiver vazia. Iterator <E> iteratoriterator ( )
Retorna o iterador da coleção boolean removeremove ( Object elemento )
Remove o elemento da coleção int sizesize ( )
Retorna a quantidade de elementos da coleção
![Page 316: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/316.jpg)
316
Exemplo HashSetimport java.util.*;public class ExemploHashSet {
public static void main(String[] args) {HashSet<String> conjunto = new HashSet<String>();conjunto.add("Maria");conjunto.add("José");conjunto.add("Joaquim");conjunto.add("Maria");System.out.println("Possui " + conjunto.size() + "
elementos");// Percurso em ordem INDETERMINADA// Percurso em ordem INDETERMINADAIterator<String> item = conjunto.iterator();while (item.hasNext()) {
System.out.println(item.next());}
}}
![Page 317: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/317.jpg)
317
Classe TreeSet<E> (java.util.TreeSet)
Alguns Construtores TreeSet ( ) TreeSet ( Comparator comparador )
Alguns Métodos boolean addadd ( E elemento )
Adiciona um elemento à coleção. void clearclear ( )
Remove todos os elementos da coleção. boolean containscontains ( Object elemento )
Retorna true se o elemento estiver contido na coleção. E firstfirst ( )
Retorna o primeiro elemento da coleção. boolean isEmptyisEmpty ( )
Retorna true se a coleção estiver vazia.
![Page 318: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/318.jpg)
318
Classe TreeSet<E> (java.util.TreeSet)
Iterator <E> iteratoriterator ( )Retorna o iterador da coleção
E lastlast ( )Retorna o último elemento da coleção.
boolean removeremove ( Object elemento )Remove o elemento da coleção
int sizesize ( )Retorna a quantidade de elementos da coleção
![Page 319: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/319.jpg)
319
Exemplo TreeSetimport java.util.*;public class ExemploTreeSet {
public static void main(String[] args) {TreeSet<String> conjunto = new
TreeSet<String>();conjunto.add("Maria");conjunto.add("José");conjunto.add("Joaquim");conjunto.add("Maria");System.out.println("Possui " + conjunto.size() + "
elementos");// Percurso em ordem crescente// Percurso em ordem crescenteIterator<String> item = conjunto.iterator();while (item.hasNext()) {
System.out.println(item.next());}
}}
![Page 320: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/320.jpg)
320
Classe Collections (java.util.Collections)
void sortsort ( List lista )Classifica os elementos de uma lista .
int binarySearchbinarySearch ( List lista, Object chavePesquisa )Retorna o índice I da lista onde o elemento está, ou um valor negativo –I caso a chavePesquisa não seja encontrada. O elemento deve ser inserido na posição (-1 * -I) para a lista continuar ordenada.
Object minmin (Collection coleção )Retorna o menor elemento da lista.
Object maxmax (Collection coleção )Retorna o maior elemento da lista.
void copycopy ( List para, List de)Copia todos os elementos de uma lista para outra.
void fillfill ( List lista, Object valor )Define todas as posições de uma lista com um determinado valor.
void reversereverse ( List lista )Inverte a ordem dos elementos na lista.
![Page 321: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/321.jpg)
321
Interface Map<K, V> (java.util.Map)
Alguns Métodos void clearclear ( )
Remove todos os mapeamentos do mapa. boolean containsKeycontainsKey ( Object chave )
Retorna true se há algum elemento mapeado pela chave. boolean containsValuecontainsValue ( Object valor )
Retorna true se há alguma chave mapeando o valor. Set <Map.Entry <K, V>> entrySetentrySet( )
Retorna um Set contendo os valores mapeados. V getget ( Object chave )
Retorna o elemento mapeado pela chave. Ou nll caso não exista.
boolean isEmptyisEmpty ( )Retorna true se o mapa estiver vazio.
Set <K> keySetkeySet ( )Retorna um Set contendo as chaves do mapa.
V putput ( K chave, V valor )Associa um valor a uma chave no mapa.
![Page 322: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/322.jpg)
322
Interface Map<K, V> (java.util.Map)
Alguns Métodos V removeremove (Object chave)
Remove um mapeamento do mapa. int sizesize ( )
Retorna o número de pares chave-valor do mapa. Collection V valuesvalues ( )
Retorna uma Collection contendo os valores do mapa.
![Page 323: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/323.jpg)
323
Percurso em um Mapimport java.util.*;public class ExemploMap {
static final String[] produtos = {"Laranja", "Melão", "Goiaba"};public static void main(String[] args) {
Map<Integer, Integer> mapa = new HashMap<Integer, Integer>();
mapa.put(1, 5);mapa.put(1, 2);mapa.put(2, 3);System.out.print("O carrinho possui " + mapa.size());System.out.println(" produtos");Set<Integer> carrinho = mapa.keySet();Iterator<Integer> p = carrinho.iterator();while (p.hasNext()) {
Integer item = p.next();System.out.print("Produto: " + produtos[item]);System.out.println(" Quantidade: " + mapa.get(item));
}}
}
![Page 324: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/324.jpg)
324
Classe HashMap<K, V> (java.util.HashMap)
Alguns Construtores HashMap ( ) HashMap ( int capacidadeInicial )
Alguns Métodos void clearclear ( )
Remove todos os elementos da coleção. boolean containsKeycontainsKey ( Object chave )
Retorna true se há algum elemento mapeado pela chave. boolean containsValuecontainsValue ( Object valor )
Retorna true se há alguma chave mapeando o valor. <V> getget ( Object chave )
Retorna o elemento mapeado pela chave. Ou nll caso não exista.
boolean isEmptyisEmpty ( )Retorna true se a coleção estiver vazia.
![Page 325: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/325.jpg)
325
Classe HashMap<K, V> (java.util.HashMap)
<V> putput ( K chave, V valor )Insere um mapeamento na coleção.
boolean removeremove ( Object chave )Remove o elemento mapeado pela chave.
int sizesize ( )Retorna a quantidade de elementos da coleção.
Collection <V> valuesvalues ( )Retorna uma coleção contendo os valores da estrutura.
![Page 326: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/326.jpg)
326
Classe TreeMap<K, V> (java.util.TreeMap)
Alguns Construtores TreeMap ( ) TreeMap ( Comparator comparador )
Alguns Métodos void clearclear ( )
Remove todos os elementos da coleção. boolean containsKeycontainsKey ( Object chave )
Retorna true se há algum elemento mapeado pela chave. boolean containsValuecontainsValue ( Object valor )
Retorna true se há alguma chave mapeando o valor. <E> firstKeyfirstKey ( )
Retorna a primeira chave do mapa. <V> getget ( Object chave )
Retorna o elemento mapeado pela chave. Ou nll caso não exista.
<E> lastKeylastKey ( )Retorna a última chave do mapa.
![Page 327: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/327.jpg)
327
Classe TreeMap<K, V> (java.util.TreeMap)
<V> putput ( K chave, V valor )Insere um mapeamento na coleção.
boolean removeremove ( Object chave )Remove o elemento mapeado pela chave.
int sizesize ( )Retorna a quantidade de elementos da coleção.
Collection <V> valuesvalues ( )Retorna uma coleção contendo os valores do mapa.
![Page 328: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/328.jpg)
328
Classe Properties (java.util.Properties)
Construtores Properties ( ) Properties ( Properties valoresPadrão)
Alguns Métodos void putput (String chave, String valor)
Define um par chave-valor no conjunto de propriedades. String getPropertygetProperty ( String chave )
Retorna o valor associado a uma chave. String getPropertygetProperty ( String chave, String
valorPadrão )Retorna o valor associado a uma chave ou valorPadrão caso a chave não seja encontrada.
void loadload ( InputStream entrada )Carrega um conjunto de propriedades de uma entrada.
void storestore ( OutputStream saída, String comentário )Salva o conjunto de propriedades em uma saída.
![Page 329: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/329.jpg)
329
Exemplo utilizando Propertiesimport java.sql.*;import java.util.*;import java.io.*;public class ExemploProperties {
public static void main ( String args [ ] ) {Properties dados = new Properties();try {
FileInputStream fis = new FileInputStream("nomeArquivoPropriedadesnomeArquivoPropriedades");
dados.load(fis);} catch(FileNotFoundException e) {
e.printStackTrace();} catch (IOException e) {
e.printStackTrace();}String driver = dados.getProperty("jdbcDriverjdbcDriver");String banco = dados.getProperty("urlBancourlBanco");String usuario = dados.getProperty("usuarioBancousuarioBanco");String senha = dados.getProperty("senhaBancosenhaBanco");
![Page 330: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/330.jpg)
330
Exemplo utilizando Properties try {
Class.forName(driver); Connection con = DriverManager.getConnection(banco, usuario, senha); Statement st = con.createStatement ( ); String sql = "SELECT * FROM nomeTabelanomeTabela ORDER BY nomeCamponomeCampo"; ResultSet rs = st.executeQuery ( sql ); while ( rs.next() ) { System.out.println( rs.getString(1) + rs.getString(2) ); } } catch (Exception e) {
System.out.println ( e ); }}
}
jdbcDriver=com.mysql.jdbc.Driver
urlBanco=jdbc:mysql://127.0.0.1:3306/uniban
usuarioBanco=root
senhaBanco=admin
![Page 331: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/331.jpg)
331
JPA - Java Persistence API(Beans de Entidade)
Referência Bibliográfica: Enterprise JavaBeans 3.0 Bill Burke & Richard Monson Editora. Prentice Hall Desenvolvendo Aplicações Web com JSP, Servlets, JSF, Hibernate, EJB 3 e Ajax
Edson GonçalvesEditora Ciência Moderna
Revista JavaMagazine edições 39 e 44 Revista MundoJava edição 24 Página da Sun sobre a tecnologia JPA http://java.sun.com/javaee/technologies/persistence.jsp
![Page 332: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/332.jpg)
332
JPA – Java Persistence API Arquitetura
Aplicação Java
Java Persistence API
Provedor JPA
API JDBC
Driver JDBC
BancoDe Dados
![Page 333: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/333.jpg)
333
JPA – Java Persistence API Conceitos
Parte integrante da JavaEE 5 Disponível a partir da Java5 Definida na JSR220 – Enterprise JavaBeans 3.0 Padroniza o Mapeamento Objeto Relacional Não depende de Container para funcionar Baseada no conceito de POJOs (Plain Old Java
Object) Utiliza amplamente Annotations (Progamação
Declarativa) Pacote javax.persistence
![Page 334: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/334.jpg)
334
JPA – Java Persistence API Entidades
Os objetos persistentes são denominados Entities(Entidades)As Classes de Entidades devem atender a alguns requisitos:
Ser anotadas com a anotação javax.persistence.Entity
Possuir um identificador(chave primária) e um construtor public ou protected sem parâmetros (podem ter outros construtores).
Não podem ser declaradas como final. Métodos ou variáveis de instância não podem ser declarados como final.
Se forem passados como parâmetro em uma chamada de método remota, a classe precisa implementar a interface java.io.Serializable.
![Page 335: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/335.jpg)
335
JPA – Java Persistence API Variáveis de instância devem ser declaradas
como private, protected ou "default", e somente podem ser acessadas diretamente por métodos da classe de entidade. Os clientes podem acessar o estado da entidade através de métodos acessores ou métodos de negócio.
Campos Persistentes e Propriedades em uma Classe de EntidadeO estado persistente de uma entidade pode ser acessado através das variáveis de instância ou através de métodos acessores no estilo JavaBeans (getters e setters). O estado é representado através dos seguintes tipos na linguagem Java:
Tipos Java primitivos Java.lang.String
![Page 336: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/336.jpg)
336
JPA – Java Persistence API Outros tipos serializáveis como: Wrappers de
tipos primitivos, java.math.BigInteger, java.math.BigDecimal, java.util.Date, java.util.Calendar, java.sql.Date, java.sql.Time, java.sql.TimeStamp, tipos serializáveis definidos pelo usuário, byte[], Byte[], char[], Character[], tipos enumerados, outras entidades e/ou coleções de entidades, classes "embeddable".
Outras entidades e/ou Coleções de entidades. Classes embutidas (Embeddable)
O mapeamento do estado das entidades é feito com anotações, ou nos campos persistentes, ou então nos métodos getters, nunca em ambos, em uma única entidade.
![Page 337: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/337.jpg)
337
JPA – Java Persistence API Unidade de Persistência (Persistence Unit)
Conjunto de classes mapeadas para um banco de dados
relacional que são gerenciadas por um Entity Manager.
Esse mapeamento é feito através de um arquivo
descritor de implantação chamado persistence.xmlpersistence.xml
que é gravado na pasta META-INFMETA-INF e que pode conter a
configuração de várias unidades de persistência.
Contexto de Persistência(Persistence Context)
Ambiente (sessão) que envolve o conjunto de instâncias
de entidades gerenciadas pelo Entity Manager.
![Page 338: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/338.jpg)
338
JPA – Java Persistence API Gerenciador de Entidades (Entity Manager)
javax.persistence.EntityManager
Serviço que gerenciará o conjunto de entidades registradas dentro de um contexto. Monitorando as alterações feitas nos objetos deste contexto de persistência, gravando assim essas alterações no banco de dados.
Provedor de Persistência (Persistence Provider)
É como se fosse um driver JPA para uma determinada ferramenta de mapeamento objeto-relacional. Mais especificamente, é a classe que implementa a interface javax.persistence.PersistenceProvider
São alguns exemplos de fornecedores de provedores de persistência:
Oracle TopLink, Hibernate, Kodo, Open JPA, etc.
![Page 339: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/339.jpg)
339
JPA – Java Persistence API Ciclo de Vida / Estados de um objeto
Objeto não existe
DETACHED
NEW
MANAGED
REMOVED
new
remove( )
persist( )merge( )
find( )
clear( ) ou quando o
EntityManager é fechado
Garbage Collector
![Page 340: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/340.jpg)
340
JPA – Java Persistence API Mapeamento Básico de Entidades
É feito com o uso de anotações nas classes persistentes. @Entity@Entity – Marca uma classe como entidade persistente. Esta
classe deve possuir um construtor sem parâmetros. @Table@Table – Define o nome da Tabela onde os objetos serão
persistidos. @Id@Id – Define o atributo que constitui a chave primária. @GeneratedValue@GeneratedValue – Define um campo auto-incremento. @Column@Column – Define o nome da coluna onde o atributo será salvo. @Temporal@Temporal – Fornece informações adicionais ao provedor de
persistência sobre o mapeamento de um atributo do tipo java.util.Date ou java.util.Calendar. Utiliza os valores TemporalType.DATE, TemporalType.TIME ou TemporalType.TIMESTAMP.
@Transient@Transient – Define que um atributo não será salvo no banco de dados.
![Page 341: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/341.jpg)
341
JPA – Java Persistence API Exemplo de Entidade
import javax.persistence.*;
import java.util.*;
@Entity@Entity
@Table (name = "Pessoa")@Table (name = "Pessoa")
public class Pessoa {
@Id@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)@GeneratedValue (strategy=GenerationType.IDENTITY)
@Column (name = "id", nullable = false, columnDefinition = @Column (name = "id", nullable = false, columnDefinition = "integer")"integer")
private int id;
@Column (name = "nome", length = 50, nullable = false)@Column (name = "nome", length = 50, nullable = false)
private String nome;
@Column (name = "dataNasc")@Column (name = "dataNasc")
@Temporal (TemporalType.DATE)@Temporal (TemporalType.DATE)
private Date dataNasc;
//getters e setters omitidos
}
![Page 342: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/342.jpg)
342
JPA – Java Persistence API Exemplo de Entidade (usando mapeamentos
padrão)
import javax.persistence.*;
import java.util.*;
@Entity@Entity
public class Pessoa {
@Id@Id
@GeneratedValue@GeneratedValue
private int id;
private String nome;
@Temporal (TemporalType.DATE)@Temporal (TemporalType.DATE)
private Date dataNasc;
//getters e setters omitidos
}
![Page 343: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/343.jpg)
343
JPA – Java Persistence API No código da aplicação que utiliza classes persistentes:
Criar uma fábrica de Gerenciador de Entidades:EntityManagerFactoryEntityManagerFactory emf =
Persistence.createEntityManagerFactoryPersistence.createEntityManagerFactory("unidade"); Criar um Gerenciador de Entidades através da fábrica:
EntityManagerEntityManager em = emf.createEntityManagercreateEntityManager(); Iniciar uma Transação (Necessário somente em alterações na base de dados):
em.getTransactiongetTransaction().beginbegin(); Criar uma Entidade:
Entidade e = newnew Entidade(); Persistir uma Entidade:
em.persistpersist(e); Localizar uma Entidade:
Entidade e = em.findfind(Entidade.class, chave); Sincronizar uma Entidade:
e = em.mergemerge(e); Eliminar uma Entidade:
em.removeremove(e); Encerrar uma Transação:
em.getTransactiongetTransaction().commitcommit();
![Page 344: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/344.jpg)
344
JPA – Java Persistence API Interface EntityManager (alguns métodos)
void persistpersist(Object objeto)Persiste uma entidade, torna-a gerenciada pelo Gerenciador de Entidades. Qualquer alteração na entidade será refletida no banco de dados.
<T> T mergemerge(T entidade)Sincroniza os dados no banco de dados com os atributos da entidade. Retorna um objeto gerenciado(managed). Não pode ser usado em um objeto REMOVED.
void refreshrefresh(Object entidade)Sincroniza os atributos da entidade com os dados do banco de dados.
void removeremove(Object entidade)Remove uma entidade do banco de dados.
<T> T findfind(Class<T> classeEntidade, Object chavePrimária)Retorna uma entidade(MANAGED) através de sua chave primária. Retorna null caso a chave não seja encontrada.
![Page 345: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/345.jpg)
345
JPA – Java Persistence API Query createQuerycreateQuery(String sql)
Cria uma consulta dinâmica. Query createNamedQuerycreateNamedQuery(String nomeConsulta)
Cria uma consulta nomeada. EntityTransaction getTransactiongetTransaction( )
Retorna a transação do EntityManager.
Interface EntityManager (alguns métodos) void beginbegin( )
Inicia uma transação. void commitcommit( )
Encerra uma transação, gravando quaisquer alterações no banco de dados.
void rollbackrollback( )Desfaz quaisquer alterações desde o início da transação.
![Page 346: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/346.jpg)
346
JPA – Java Persistence API Exemplo de Aplicação JavaSE usando Oracle TopLink
Baixe o Oracle TopLink através do link:
http://www.oracle.com/technology/products/ias/toplink/jpa/
download.html
Coloque o arquivo baixado em uma pasta de trabalho e execute
o seguinte comando nesta pasta:
java -jar glassfish-persistence-installer-v2-bXX.jarjava -jar glassfish-persistence-installer-v2-bXX.jar Isto irá criar uma pasta chamada glassfish-persistenceglassfish-persistence
contendo o arquivo de licença, README e as bibliotecas TopLink
Essentials:
3RD-PARTY-LICENSE.txt
CDDLv1.0.txt
README
toplink-essentials-agent.jartoplink-essentials-agent.jar
toplink-essentials.jartoplink-essentials.jar
![Page 347: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/347.jpg)
347
JPA – Java Persistence API Crie um projeto (Java5 ou superior) e adicione os arquivos .jar
mencionados anteriormente, no classpath, para que se possa utilizar o Oracle TopLink. Não esqueça de adicionar também o .jar do driver JDBC para o seu banco de dados.
Crie a classe persistente chamada PessoaPessoa descrita abaixo:
package modelo;import javax.persistence.*;import java.util.*;
@Entity@Entitypublic class Pessoa {
@Id@Id
@GeneratedValue (strategy=GenerationType.IDENTITY)@GeneratedValue (strategy=GenerationType.IDENTITY)private int id;private String nome;
@Temporal (TemporalType.DATE)@Temporal (TemporalType.DATE)private Date dataNasc;//getters e setters omitidos
}
![Page 348: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/348.jpg)
348
JPA – Java Persistence API Crie o arquivo persistence.xmlpersistence.xml na pasta META-INFMETA-INF dentro da pasta srcsrc
em seu projeto.
<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="testeteste"><provider>
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvideroracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider><class>modelo.Pessoamodelo.Pessoa</class><properties>
<property name="toplink.logging.level" value="INFOINFO" /><property name="toplink.jdbc.drivertoplink.jdbc.driver"
value="com.mysql.jdbc.Drivercom.mysql.jdbc.Driver" />
![Page 349: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/349.jpg)
349
JPA – Java Persistence API<property name="toplink.jdbc.url"
value="jdbc:mysql://127.0.0.1:3306/unibanjdbc:mysql://127.0.0.1:3306/uniban" /><property name="toplink.jdbc.user" value="rootroot" /><property name="toplink.jdbc.password" value="adminadmin" /><property name="toplink.ddl-generation" value="create-tables" />
</properties></persistence-unit>
</persistence>
Crie o banco de dados de teste com o nome unibanuniban
![Page 350: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/350.jpg)
350
JPA – Java Persistence API Inclusão - Inclusão - Crie a classe da aplicação chamada IncluiPessoaIncluiPessoa e a execute.
package negocio;import modelo.*;import javax.persistence.*;import java.util.*;public class IncluiPessoa { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); Pessoa p = new Pessoa();Pessoa p = new Pessoa(); p.setNome("Breno");p.setNome("Breno");
GregorianCalendar data = GregorianCalendar data = new GregorianCalendar(2008, Calendar.FEBRUARY, 25);new GregorianCalendar(2008, Calendar.FEBRUARY, 25);
p.setDataNasc(data.getTime());p.setDataNasc(data.getTime()); em.persist(p); //Torna o objeto MANAGEDem.persist(p); //Torna o objeto MANAGED em.getTransaction().commit(); em.close(); emf.close(); System.out.println("id da pessoa persistida: " + p.getId()); }}
![Page 351: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/351.jpg)
351
JPA – Java Persistence API Implantação da Aplicação (deploy) / Geração de jar executável.
Na pasta raiz do seu projeto, crie um arquivo texto chamado manifest.txt com o seguinte conteúdo:
Main-class: CriaPressoaClass-path: mysql-connector-java-5.0.6-bin.jar toplink-essentials.jar toplink-essentials-agent.jar
Obs.:Obs.: Deve haver um espaço em branco após os dois pontos de cada parâmetro; deve haver uma linha em branco no final do arquivo; os arquivos .jar devem ser separados por espaços em branco e devem estar numa única linha no arquivo.
No prompt de comando, na pasta raiz do seu projeto, digite a seguinte linha de comando:
jar cvfm teste.jar manifest.txt *.class model/*.class META-INF/*
Será gerado um arquivo chamado teste.jar que contém as classes da aplicação.
Copie os arquivos .jar do Oracle TopLink e o .jar do driver JDBC para a pasta onde estiver o arquivo teste.jar.
Para executar a aplicação, digite a seguinte linha de comando:java -jar teste.jar
![Page 352: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/352.jpg)
352
JPA – Java Persistence API Automatização de deploy com o Apache Ant
Baixe o Ant (arquivo: apache-ant-1.7.0-bin.zip) do site: http://ant.apache.org
Descompacte o arquivo na pasta raiz do hd. Renomeie a pasta para "antant". Crie uma variável de ambiente chamada "ANT_HOMEANT_HOME"
contendo o caminho da pasta de instalação do ant:
"set ANT_HOME=c:\ant" Inclua o caminho "%ANT_HOME%\bin%ANT_HOME%\bin" no path do
sistema. Crie um arquivo build.xmlbuild.xml na pasta raiz do seu projeto
com o conteúdo a seguir.
![Page 353: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/353.jpg)
353
JPA – Java Persistence API<?xml version="1.0" encoding="iso-8859-1" ?>
<project name= "teste" default= "implantaJar""implantaJar" >
<target name="implantaJar"name="implantaJar" depends="criaJar"> <copy file="${jarFile}" todir="${deployDir}"
overwrite="yes"/> </target>
<target name="criaJar"name="criaJar" depends="compila"> <jar destfile="${jarFile}" > <fileSet dir="." includes="*.class" /> <fileSet dir="./model" includes="*.class" />
<fileSet dir="./META-INF" includes="**" /> </jar> </target>
![Page 354: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/354.jpg)
354
JPA – Java Persistence API <target name="compila"name="compila" depends="ambiente"> <javac srcdir="." destdir="."> <classpath path=" lib/toplink-essentials.jar" /> <classpath path=" lib/toplink-essentials-agent.jar" /> </javac> <javac srcdir="./model" destdir="./model"> <classpath path=" lib/toplink-essentials.jar" /> <classpath path=" lib/toplink-essentials-agent.jar" /> </javac> </target>
<target name="ambiente"name="ambiente" > <property name="jarFile" value= "./teste.jar""./teste.jar" /> <property name="deployDir" value="." /> </target> </project>
![Page 355: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/355.jpg)
355
JPA – Java Persistence API Integrando o ANT com o Eclipse
Selecione o menu "Project"; Selecione "properties"; Selecione "Builders"; Clique em "new"; Escolha "Ant Build"; Em "Name Buildfile" clique em xxx e
selecione o arquivo de build criado anteriormente;
Com o build selecionado clique no botão "up" até que o "ant build" apareça em primeiro lugar na lista.
![Page 356: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/356.jpg)
356
JPA – Java Persistence API Busca – Busca – Localiza uma entidade através da chave primária.package negocio;import modelo.*;import javax.persistence.*;public class BuscaPessoa { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager(); Pessoa p = em.find(Pessoa.class, 3); // Retorna um objeto MANAGEDPessoa p = em.find(Pessoa.class, 3); // Retorna um objeto MANAGED if (p != null) { System.out.println("ID: " + p.getId()); System.out.println("Nome: " + p.getNome()); //Objeto está MANAGED, porém, qualquer alteração NÃO será//Objeto está MANAGED, porém, qualquer alteração NÃO será //refletida no banco de dados, pois não há Transação.//refletida no banco de dados, pois não há Transação. p.setNome("Novo Nome"); } else { System.out.println("Pessoa não encontrada!"); } }}
![Page 357: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/357.jpg)
357
JPA – Java Persistence API Alteração – Alteração – Localiza uma entidade através da chave primária e altera
seu estado.package negocio;import modelo.*;import javax.persistence.*;import java.util.*;public class AlteraPessoa { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); Pessoa p = em.find(Pessoa.class, 1); Pessoa p = em.find(Pessoa.class, 1); //Retorna um objeto MANAGED//Retorna um objeto MANAGED
if (p != null) {if (p != null) {p.setNome("Novo Nome");p.setNome("Novo Nome");
p.setDataNasc(new Date());p.setDataNasc(new Date());System.out.println("id da pessoa alterada: " + p.getId());System.out.println("id da pessoa alterada: " + p.getId());
}} em.getTransaction().commit();
em.close(); emf.close();
}}
![Page 358: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/358.jpg)
358
JPA – Java Persistence API Exclusão - Exclusão - Localiza uma entidade através da chave primária e a exclui.package negocio;import modelo.*;import javax.persistence.*;public class ExcluiPessoa {
public static void main(String[] args) { EntityManagerFactory emf =
Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin(); Pessoa p = em.find(Pessoa.class, 8);Pessoa p = em.find(Pessoa.class, 8); if (p != null) {
em.remove(p); /*Objeto torna-se REMOVED, qualquer alteraçãoem.remove(p); /*Objeto torna-se REMOVED, qualquer alteração não será refletida no banco de dados.*/não será refletida no banco de dados.*/ System.out.println("Pessoa excluída: " + p.getId());
System.out.println(" " + p.getNome()); } else {
System.out.println("Pessoa não encontrada!"); } em.getTransaction().commit(); em.close(); emf.close();
}}
![Page 359: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/359.jpg)
359
JPA – Java Persistence API Sincronização - Sincronização - Localiza uma entidade através da chave primária, encerra o
EntityManager, altera o estado da entidade e a sincroniza no banco de dados.
package negocio;import modelo.*;import javax.persistence.*;public class SincronizaPessoa {
public static void main(String[] args) {EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste");EntityManager em = emf.createEntityManager();Pessoa p = em.find(Pessoa.class, 9);Pessoa p = em.find(Pessoa.class, 9);em.close();em.close();if (p != null) {
System.out.println("Nome: " + p.getNome());p.setNome("Nicole");em = emf.createEntityManager();em = emf.createEntityManager();em.getTransaction().begin();em.getTransaction().begin();em.merge(p); //Sincroniza o estado da entidade no banco de dadosem.merge(p); //Sincroniza o estado da entidade no banco de dadosem.getTransaction().commit();em.getTransaction().commit();em.close();em.close();System.out.println("Novo Nome: " + p.getNome());
} else {System.out.println("Pessoa não encontrada!");
}}
}
![Page 360: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/360.jpg)
360
JPA – Java Persistence API Consultas
As consultas são criadas usando-se tanto a linguagem de consulta EJB Query LanguageEJB Query Language (também chamada de JPA QLJPA QL) como a SQL nativa. A EJB QL é semelhante à SQL, só que orientada a objetos e portável para diferentes implementações de bancos de dados.
São executadas por meio da interface javax.persistence.Queryjavax.persistence.Query que é muito parecida com a interface java.sql.PreparedStatementjava.sql.PreparedStatement. Essa interface Query é obtida em tempo de execução a partir do gerenciador de entidade.
As consultas podem ser criadas dinamicamente em tempo de execução ou pré-declaradas por meio de anotações nas classes persistentes ou através de XML.
![Page 361: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/361.jpg)
361
JPA – Java Persistence API Interface Query (javax.persistence.Query)
Alguns Métodos List getResultListgetResultList ( )
Executa uma consulta e retorna uma coleção de resultados.
Object getSingleResultgetSingleResult ( )
Executa uma consulta e retorna um único resultado. int executeUpdateexecuteUpdate ( )
Executa um comando de atualização(insert, update ou delete) e retorna o número de linhas afetadas no banco de dados.
Query setMaxResultssetMaxResults (int máximo)
Define o número máximo de entidades que deve ser retornado na consulta.
![Page 362: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/362.jpg)
362
JPA – Java Persistence API Query setFirstResultsetFirstResult (int início)
Define o número da linha inicial que irá compor o resultado da consulta.
void setParametersetParameter (String nome, Object valor)
Define o valor de um parâmetro através de seu nome. Query setParametersetParameter (String nome, Date valor, TemporalType
tipo)
Define o valor de um parâmetro do tipo data através de seu nome.
Query setParametersetParameter (int posição, Object valor)
Define o valor de um parâmetro através de sua posição. Query setParametersetParameter (int posição, Date valor, TemporalType
tipo)
Define o valor de um parâmetro do tipo data através de sua posição.
![Page 363: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/363.jpg)
363
JPA – Java Persistence API Consultas Dinâmicas
São criadas pelo gerenciador de entidades através do método createQuerycreateQuery().
Consulta que retorna um único resultado:try {
Query consulta = em.createQuerycreateQuery( "Select a from Aluno a where a.ra = :ra:ra"); consulta.setParametersetParameter("rara", 123456789); Aluno a = (Aluno) consulta.getSingleResultgetSingleResult(); System.out.println("RA: " + a.getRa()); System.out.println("Nome: " + a.getNome());} catch(NoResultExceptionNoResultException ex) { System.out.println("Aluno não encontrado");} catch(NonUniqueResultExceptionNonUniqueResultException ex) { System.out.println("Mais que um resultado
encontrado");}
![Page 364: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/364.jpg)
364
JPA – Java Persistence API Os parâmetros da consulta são ajustados através
do método setParametersetParameter( ) e podem ser indicados através de duas formas:
Identificados, utilizando-se :: (dois pontos) e um nome;
Query consulta = em.createQuerycreateQuery( "Select a from Aluno a where a.ra = :ra:ra and a.nome
= :nome:nome );consulta.setParametersetParameter("rara", 123456789);consulta.setParametersetParameter("nomenome", "Maria");
Seqüenciados, utilizando-se ?? (interrogação) e um número sequencial.
Query consulta = em.createQuerycreateQuery( "Select a from Aluno a where a.ra = ?1?1 and a.nome = ?2?2 )
consulta.setParametersetParameter(11, 123456789);consulta.setParametersetParameter(22, "Maria");
![Page 365: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/365.jpg)
365
JPA – Java Persistence APIpackage negocio;import modelo.*;
import javax.persistence.*;
public class BuscaPorRA { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager(); try { Query consulta = em.createQuery("Select a from Aluno a where Query consulta = em.createQuery("Select a from Aluno a where
a.ra = :ra");a.ra = :ra"); consulta.setParameter("ra", 123456789);consulta.setParameter("ra", 123456789); Aluno a = (Aluno)consulta.getSingleResult();Aluno a = (Aluno)consulta.getSingleResult(); System.out.println("RA: " + a.getRa()); System.out.println("Nome: " + a.getNome()); } catch(NoResultExceptionNoResultException ex) { System.out.println("Aluno não encontrado"); } catch(NonUniqueResultExceptionNonUniqueResultException ex) { System.out.println("Mais que um resultado encontrado"); } em.close(); emf.close(); }}
Consulta que retorna um único resultado
![Page 366: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/366.jpg)
366
JPA – Java Persistence API Consulta que retorna os resultados em uma
java.util.List:
Query consulta = em.createQuerycreateQuery( "Select a from Aluno a where a.ms1
> :media:media"); consulta.setParametersetParameter("mediamedia", 5); ListList <Aluno>alunos = consulta.getResultListgetResultList();
if (!!alunos.isEmptyisEmpty()) { for (Aluno a : alunos) {
System.out.println("Nome: " + a.getNome()); } } else { System.out.println("Alunos não encontrados"); }
![Page 367: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/367.jpg)
367
JPA – Java Persistence APIpackage negocio;import java.util.List;import modelo.*;import javax.persistence.*;public class ConsultaPorMedia { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager();
Query consulta = em.createQuery( "Select a from Aluno a where a.ms1 > :media"); consulta.setParameter("media", 5); List <Aluno>alunos = consulta.getResultList(); if (!alunos.isEmpty()) { for (Aluno a : alunos) { System.out.println("Nome: " + a.getNome()); } } else { System.out.println("Alunos não encontrados"); }
em.close(); emf.close(); }}
Consulta que retorna umacoleção de resultados
![Page 368: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/368.jpg)
368
JPA – Java Persistence API Consulta que utiliza um java.util.Date como
parâmetro:
Query consulta = em.createQuerycreateQuery( "Select a from Aluno a where a.DataMatricula
= :data:data"); consulta.setParametersetParameter("datadata", new java.util.Date,
TemporalType.DATETemporalType.DATE); ListList <Aluno>alunos = consulta.getResultListgetResultList();
if (!!alunos.isEmptyisEmpty()) { for (Aluno a : alunos) {
System.out.println("Nome: " + a.getNome()); } } else { System.out.println("Alunos não encontrados"); }
![Page 369: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/369.jpg)
369
JPA – Java Persistence API Consulta com paginação de resultados:
public static List getAlunos(int maximo, int inicio) {Query consulta = em.createQuery("Select a from
Aluno a");return consulta.setMaxResultssetMaxResults(maximo).
setFirstResultsetFirstResult(inicio).getResultListgetResultList();
}
![Page 370: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/370.jpg)
370
JPA – Java Persistence APIpackage negocio;import modelo.*;import javax.persistence.*;import java.util.List;public class ConsultaPaginada {
static EntityManagerFactory emf;static EntityManager em;
public static List getAlunos(int maximo, int inicio) {Query consulta = em.createQuery("Select a from Aluno a");return consulta.setMaxResults(maximo).
setFirstResult(inicio).getResultList();
}
Consulta com paginaçãode resultados
![Page 371: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/371.jpg)
371
JPA – Java Persistence APIpublic static void main(String[] args) {
emf = Persistence.createEntityManagerFactory("teste");em = emf.createEntityManager();int inicio = 1, maximo = 3;int pagina = 1;List <Aluno> alunos = null;do {
alunos = getAlunos(maximo, inicio);if (!alunos.isEmpty()) {
System.out.println("Pág. " + pagina);for (Aluno a : alunos) {
System.out.println("Nome: " + a.getNome());}
}inicio += maximo;pagina++;
} while (!alunos.isEmpty());em.close();emf.close();
}}
![Page 372: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/372.jpg)
372
JPA – Java Persistence API Consultas Nomeadas (Identificadas)
São consultas pré-definidas na classe da entidade e podem ser reutilizadas em diferentes pontos da sua aplicação, facilitando assim sua manutenção.
São declaradas através das anotações @NamedQueries@NamedQueries(define um array de consultas nomeadas) e @NamedQuery@NamedQuery(define uma consulta nomeada).
São criadas pelo gerenciador de entidades através do método createNamedQuerycreateNamedQuery().
@NamedQueries@NamedQueries({@NamedQuery@NamedQuery(name = "consultaPorRAconsultaPorRA",
query = "Select a from Aluno a where a.ra = :ra"),@NamedQuery@NamedQuery(name = "consultaPorMediaconsultaPorMedia",
query = "Select a from Aluno a where a.ms1 > :media")})
Query consulta = em.createNamedQuerycreateNamedQuery("consultaPorMediaconsultaPorMedia");
consulta.setParameter("media", 5);
Na entidade
Na aplicação
![Page 373: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/373.jpg)
373
JPA – Java Persistence APIpackage modelo;import javax.persistence.*;@NamedQueries( {@NamedQueries( {
@NamedQuery(name = "buscaPorRA", @NamedQuery(name = "buscaPorRA", query = "Select a from Aluno a where a.ra = :ra"),query = "Select a from Aluno a where a.ra = :ra"),
@NamedQuery(name = "consultaPorMedia", @NamedQuery(name = "consultaPorMedia", query = "Select a from Aluno a" + query = "Select a from Aluno a" +
" where (a.ms1*0.3 + a.ms2*0.7) > :media")," where (a.ms1*0.3 + a.ms2*0.7) > :media"),@NamedQuery(name = "aumentaMedia", @NamedQuery(name = "aumentaMedia",
query = "Update Aluno set ms1 = ms1 + :bonus"),query = "Update Aluno set ms1 = ms1 + :bonus"),})})@Entitypublic class Aluno {
@Id@GeneratedValue(strategy=GenerationType.IDENTITY)private int id;private String nome;private long ra;private double ms1;private double ms2;// getters e setters omitidos// getters e setters omitidos
}
Utilização de Consulta NomeadaClasse da EntidadeClasse da Entidade
![Page 374: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/374.jpg)
374
JPA – Java Persistence APIpackage negocio;import modelo.*;import javax.persistence.*;import java.util.List;public class ConsultaNomeada { public static void main(String[] args) { EntityManagerFactory emf =
Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager();
Query consulta = Query consulta = em.createNamedQuery("consultaPorMedia");em.createNamedQuery("consultaPorMedia");
consulta.setParameter("media", 5);consulta.setParameter("media", 5); List <Aluno>alunos = consulta.getResultListgetResultList(); if (!alunos.isEmpty()) { for (Aluno a : alunos) { System.out.println("Nome: " + a.getNome()); } } else { System.out.println("Alunos não encontrados"); }
em.close(); emf.close(); }}
Utilização de Consulta NomeadaClasse da AplicaçãoClasse da Aplicação
![Page 375: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/375.jpg)
375
JPA – Java Persistence API Alterações em Lote
São criadas pelo gerenciador de entidades da mesma forma que as consultas.
Podem ser tanto dinâmicas como nomeadas. São executadas através do método
executeUpdateexecuteUpdate() que retorna o número de linhas afetadas.
Query alteracao = em.createQuerycreateQuery(
"UpdateUpdate Aluno set ms1 = ms1 + :bonus:bonus");
alteracao.setParametersetParameter("bonusbonus", 0.5);
intint qtdAlunos = alteracao.executeUpdateexecuteUpdate();
![Page 376: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/376.jpg)
376
JPA – Java Persistence APIpackage negocio;
import javax.persistence.*;
public class AumentaMedia { public static void main(String[] args) { EntityManagerFactory emf =
Persistence.createEntityManagerFactory("teste"); EntityManager em = emf.createEntityManager(); em.getTransaction().begin();
Query alteracao = em.createQuery( Query alteracao = em.createQuery( "Update Aluno set ms1 = ms1 "Update Aluno set ms1 = ms1
+ :bonus");+ :bonus"); alteracao.setParameter("bonus", 0.5);alteracao.setParameter("bonus", 0.5); int qtdAlunos = alteracao.executeUpdate();int qtdAlunos = alteracao.executeUpdate();
System.out.println(qtdAlunos + " Alunos bonificados");
em.getTransaction().commit(); em.close(); emf.close(); }}
Alteração em lote
![Page 377: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/377.jpg)
377
JPA – Java Persistence API Eventos de Retorno de Chamada
Através das anotações abaixo, pode-se definir métodos que serão executados em resposta a um evento do ciclo de vida de uma entidade.
@PrePersist@PrePersistDefine o método a ser executado logo após a uma chamada de EntityManager.persist().
@PostPersist@PostPersistDefine o método a ser executado após a inserção no banco de dados.
@PostLoad@PostLoadDefine o método a ser executado após a uma chamada de EntityManager.find(), EntityManager.refresh(), ou quando uma consulta EJB QL é executada.
![Page 378: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/378.jpg)
378
JPA – Java Persistence API @PreUpdate@PreUpdate
Define o método a ser executado antes do estado de uma entidade ser sincronizado com o banco de dados.
@PostUpdate@PostUpdateDefine o método a ser executado após o estado de uma entidade ser sincronizado, isso ocorre na confirmação de uma transação, após uma chamada a EntityManager.flush() ou sempre que o contexto de persistência atualizar o banco de dados.
@PreRemove@PreRemoveDefine o método a ser executado após a uma chamada de EntityManager.remove().
@PostRemove@PostRemoveDefine o método a ser executado após a exclusão no banco de dados ser efetivada.
Pesquise também sobre Ouvintes de entidade.
![Page 379: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/379.jpg)
379
JPA – Java Persistence APIpackage modelo;import java.io.*;import java.util.Date;import javax.persistence.*;
@Entitypublic class Aluno {
...@PrePersist@PrePersistvoid prePersist() {
try {FileOutputStream fos = new FileOutputStream("log.txt", true);String linha = "Aluno " + getNome() + " gravado em " + new
Date() + "\n"; fos.write(linha.getBytes());fos.close();fos.close();
} catch (IOException e) {e.printStackTrace();
}}
}
Exemplo de Arquivo de Log
![Page 380: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/380.jpg)
380
JPA – Java Persistence API Exemplo de Aplicação Swing com
JPA
![Page 381: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/381.jpg)
381
JPA – Java Persistence API Relacionamentos e Agregações
Em construção!!!
![Page 382: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/382.jpg)
382
EJB – Enterprise JavaBeans
Referência Bibliográfica: Enterprise JavaBeans 3.0 Bill Burke & Richard Monson Editora. Prentice Hall Tutorial do J2EE Bodoff – Green – Haase – Jendrock - Pawlan – Stearns Editora Campus Revista JavaMagazine edições 8, e 47 Tutorial da Sun sobre JavaEE
http://java.sun.com/javaee/5/docs/tutorial/doc/
![Page 383: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/383.jpg)
383
Aplicações MultiCamadasCamadaCliente
Camada Web Camada EIS
Bancos de Dados
RequestRequestHttpServletRequestHttpServletRequest
ResponseResponseHttpServletResponseHttpServletResponse
HTMLXMLJavaScriptApplet
Servlet JSP
MainFrame
Servidor de Servidor de Aplicações / Aplicações /
Servidor Servidor WebWeb
Aplicação Desktop / Web
JCA
EJB
Camada deNegócios
JPA / JDBC
Aplicações JavaDesktop
![Page 384: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/384.jpg)
384
EJB – Enterprise JavaBeans EJB – Enterprise JavaBean
Componente de software padrão executado no lado servidor (camada de negócios) que encapsula a lógica que atende às necessidades de um domínio de negócios. É utilizado na criação de aplicações corporativas distribuídas desenvolvidas com a tecnologia Java.
Contêiner EJBÉ o ambiente responsável por gerenciar o ciclo de vida das instâncias das classes bean(objetos EJB) dentro de um servidor de aplicações.
Servidor de Aplicações JavaEESistema que deve implementar os seguintes serviços:
Enterprise JavaBeans (EJB) – Contêiner EJB Java Persistence (JPA) Java Message Service (JMS) Java Transaction Service/Java Transaction API (JTS/JTA) Servlets e JavaServer Pages (JSP) – Contêiner Web Java Naming and Directory Interface (JNDI)
![Page 385: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/385.jpg)
385
EJB – Enterprise JavaBeansDisponibiliza também entre outros recursos:
Pool de Instâncias EJB Pool de Conexões a Bancos de Dados Controle de Concorrência Conectividade Remota Gerenciamento de Segurança
Autenticação (identificação do usuário) Autorização (controle do que um usuário pode acessar) Comunicação (criptografia)
Quando usar EJB em suas aplicações Quando a aplicação deve ser escalável, tanto por possuir um número
crescente de usuários, como a aplicação pode estar distribuída em múltiplas máquinas.
Quando transações são necessárias para garantir a integridade dos dados.
Quando a aplicação possuir um alto número de clientes. Como a lógica de negócio fica nos componentes no lado servidor, a manutenção é facilitada.
![Page 386: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/386.jpg)
386
EJB – Enterprise JavaBeans Os três tipos básicos de Enterprise JavaBeans:
Beans de Entidadade – Entity Beans (JPA-Entity)São persistentes, representam o modelo persistente de dados. São gerenciados pelo serviço EntityManager.
Beans de Sessão – Session BeansNão são persistentes. São freqüentemente utilizados para gerenciar as interações entre os beans de entidade. Representam um fluxo de tarefa, um processo de negócio.
Beans baseados em mensagens – Message Driven Beans Recebem e processam mensagens assincronamente. São utilizados na interação com outros aplicativos através de um serviço de mensagens (JMS).
Não possuem interfaces Local, nem Remota. Normalmente implementam a interface MessageListener,MessageListener, implementando assim o método onMessage()onMessage() onde se localiza a lógica de negócio.
![Page 387: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/387.jpg)
387
EJB – Enterprise JavaBeans Beans de Sessão – Session Beans
Stateful SessionBean (Beans de sessão com informações de estado)
Mantém o estado conversacional entre as chamadas de um cliente para o servidor, o que permite manter dados específicos ao cliente entre invocações de método. É uma extensão do aplicativo cliente. Não são mantidos em um pool de instâncias.
Stateless SessionBean (Beans de sessão sem informações de estado)
Não mantém nenhum estado conversacional entre o cliente e o servidor. São mantidos em um pool de instâncias. Possuem um desempenho maior que os beans de sessão com informações de estado. São utilizados para realizar tarefas que sejam realizadas em uma única chamada de método.
![Page 388: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/388.jpg)
388
EJB – Enterprise JavaBeans Componentes de um aplicativo que utiliza
SessionBean. Interfaces Remota e/ou Local
Interface remotaAnotada com @[email protected] quais os métodos que um cliente tem permissão para invocar.
Interface localAnotada com @[email protected] quais os métodos que um outro EJB pode invocar dentro da mesma JVM.
Classe do Bean
Anotada com @[email protected] ou @[email protected]
Contém a lógica de negócio, implementando os métodos descritos nas interfaces remota e/ou local e opcionalmente as interfaces de negócio.
Cliente Remoto
Aplicação que se conecta ao servidor EJB. Por meio da API JNDI, ele localiza a interface remota do EJB a ser utilizado e através da referência dessa interface aciona os métodos remotos do componente EJB.
![Page 389: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/389.jpg)
389
Instalação e configuração do JBoss Baixe o JBoss no site
http://jboss.com/products/jbossas/downloads Para Windows, baixe o arquivo jems-installer-jems-installer-
1.2.0.GA.jar1.2.0.GA.jar e execute-o. Na tela de configuração do tipo de instalção, selecione a
opção EJB3EJB3.
![Page 390: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/390.jpg)
390
Instalação e configuração do JBoss Nas demais telas, apenas clique em next, selecionando
assim as opções padrão. Para iniciar o servidor, basta executar o arquivo de lote
run.batrun.bat na pasta bin do diretório de instalação. Para encerrar o servidor, pressione <Ctrl><C><Ctrl><C> no prompt de comandos onde o servidor está sendo executado ou execute o arquivo de lote shutdown.batshutdown.bat com a opção --SS.
Acesso o endereço http://localhost:8080http://localhost:8080 para verificar a instalação.
É aconselhável que se crie uma variável de ambiente JBOSS_HOMEJBOSS_HOME contendo o caminho do diretório de instalação do JBoss.
![Page 391: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/391.jpg)
391
EJB – Enterprise JavaBeans Construção da aplicação exemplo usando JBoss
Crie um novo projeto Java e adicione no classpath os arquivos jboss-ejb3x.jarjboss-ejb3x.jar e ejb3-persistenceejb3-persistence que se encontram na pasta: %JBOSS_HOME%/client/%JBOSS_HOME%/client/
Torne a classe modelo.Alunomodelo.Aluno serializável. Pois os objetos dessa classe irão trafegar pela rede.
Crie no pacote negocio.ejbnegocio.ejb a Interface Remota AlunoRemoteAlunoRemote. Adicione o projeto que contém a classe modelo.Aluno no
buildpath.
package negocio.ejb;
import javax.ejb.*;import javax.ejb.*;import modelo.Aluno;
@Remote@Remotepublic interface AlunoRemoteAlunoRemote {
public int incluirincluir(Aluno a);}
Interface Remota
![Page 392: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/392.jpg)
392
EJB – Enterprise JavaBeans Crie no pacote negocio.ejbnegocio.ejb a classe do bean AlunoBeanAlunoBean
package negocio.ejb;
import modelo.Aluno;
import javax.persistence.*;
import javax.ejb.*;import javax.ejb.*;
@Stateless@Stateless
public class AlunoBeanAlunoBean implements AlunoRemoteAlunoRemote {
@PersistenceContext(unitName = "teste")@PersistenceContext(unitName = "teste")
private EntityManager em;private EntityManager em;
public int incluirincluir(Aluno a) {
em.persist(a);
return a.getId();
}
}
Classe do Bean
![Page 393: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/393.jpg)
393
EJB – Enterprise JavaBeans Crie no pacote clientecliente a classe ClienteAlunoEJBClienteAlunoEJBpackage cliente;import modelo.*;import negocio.ejb.*;import javax.naming.*;import javax.naming.*;import java.util.*;
public class ClienteAlunoEJB {public static void main(String[] args) {
try {Properties prop = new Properties();prop.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jboss.naming.NamingContextFactory");prop.put(Context.PROVIDER_URL, "localhost:1099");InitialContext jndiContext = new InitialContext(prop);InitialContext jndiContext = new InitialContext(prop);Object ref = jndiContext.lookup("AlunoBean/remote");Object ref = jndiContext.lookup("AlunoBean/remote");AlunoRemote refBean = (AlunoRemote) ref;AlunoRemote refBean = (AlunoRemote) ref;
Cliente Remoto
Configuração do Contexto JNDI (dependente do servidor)
![Page 394: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/394.jpg)
394
EJB – Enterprise JavaBeansAluno a = new Aluno();
a.setNome("José");
a.setRa(987654321);
a.setMs1(7.5);
a.setMs2(6.0);
int id = refBean.incluir(a);
System.out.println("Id do aluno inserido " + id);
} catch (NamingException ex) {
ex.printStackTrace();
}
}
}
![Page 395: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/395.jpg)
395
EJB – Enterprise JavaBeans Implantação da aplicação.
Os arquivos Aluno.classAluno.class, AlunoBean.classAlunoBean.class,
AlunoRemote.classAlunoRemote.class e o persistence.xmlpersistence.xml serão empacotados em um arquivo .jar e implantados no diretório de deploy do servidor JBoss.
Para se executar a aplicação, algumas configurações deverão ser efetuadas previamente:
Criação de uma Fonte de Dados para o Banco MySQLMySQL.
Criação do arquivo persistence.xmlpersistence.xml.
Criação de um arquivo de build (build.xml) para automatizar a implantação através do aplicativo
Apache AntApache Ant.
![Page 396: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/396.jpg)
396
EJB – Enterprise JavaBeans Configure o JBoss para fazer conexão com o MYSQL.
Crie o arquivo testedb-ds.xmltestedb-ds.xml na pasta %JBOSS_HOME%JBOSS_HOME%/server/default/deploy%/server/default/deploy
<?xml version="1.0" encoding="UTF-8"?>
<datasources> <local-tx-datasource> <jndi-name>TesteDSTesteDS</jndi-name> <connection-url>
jdbc:mysql://localhost:3306/unibanjdbc:mysql://localhost:3306/uniban </connection-url>
<driver-class>com.mysql.jdbc.Drivercom.mysql.jdbc.Driver</driver-class>
<user-name>rootroot</user-name> <password>adminadmin</password> </local-tx-datasource></datasources> Copie o driver JDBC do MySQL para a pasta
%JBOSS_HOME%/server/default/lib%JBOSS_HOME%/server/default/lib
Configuração da Fonte de Dados
![Page 397: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/397.jpg)
397
EJB – Enterprise JavaBeans Crie o arquivo persistence.xmlpersistence.xml na pasta META-INFMETA-INF
em seu projeto.
<persistence><persistence-unit name="testeteste">
<jta-data-source>java:/TesteDSjava:/TesteDS</jta-data-source> <properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties></persistence-unit>
</persistence>
Configuração do persistence.xml
![Page 398: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/398.jpg)
398
EJB – Enterprise JavaBeans Crie o arquivo build.xmlbuild.xml na pasta raiz do seu projeto.
<?xml version="1.0"?><project name="ExemploAlunoEJBExemploAlunoEJB" default="ejbjar"
basedir="."> <property environment="env"/> <property name="src.dir" value="${basedir}"/> <property name="jboss.home" value="${env.JBOSS_HOME}"/> <property name="build.dir" value="${basedir}/build"/> <property name="build.classes.dir"
value="${build.dir}/classes"/>
<!-- Local onde estão as classes persistentes --><!-- Local onde estão as classes persistentes --> <property name="modelo"
value="/JavaProg/ProjetoJPA//JavaProg/ProjetoJPA/modelo"/>
Criação do arquivo de build
![Page 399: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/399.jpg)
399
EJB – Enterprise JavaBeans<!-- Construção do classpath --><!-- Construção do classpath --> <path id="classpath"> <fileset dir="${jboss.home}/server/default/lib"> <include name="*.jar"/> </fileset> <fileset dir="${jboss.home}/server/default/deploy/ejb3.deployer"> <include name="*.jar"/> </fileset> <fileset dir="${jboss.home}/server/default/deploy/jboss-aop-
jdk50.deployer"> <include name="*.jar"/> </fileset> <fileset dir="${jboss.home}/lib"> <include name="*.jar"/> </fileset> <fileset dir="${modelo}"> <include name="*.class"/> </fileset>
<pathelement location="${build.classes.dir}"/></path><property name="build.classpath" refid="classpath"/>
![Page 400: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/400.jpg)
400
EJB – Enterprise JavaBeans<!-- Prepara o diretório de build --><!-- Prepara o diretório de build --> <target name="prepare" > <mkdir dir="${build.dir}"/> <mkdir dir="${build.classes.dir}"/>
<mkdir dir="${build.classes.dir}/modelo"/><copy file="${modelo}/Aluno.class" todir="${build.classes.dir}/modelo"/>
</target>
<!-- Compila os arquivos de código fonte --><!-- Compila os arquivos de código fonte --> <target name="compile" depends="prepare"> <javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="on" deprecation="on" optimize="off" includes="**"> <classpath refid="classpath"/> </javac> </target>
![Page 401: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/401.jpg)
401
EJB – Enterprise JavaBeans<!-- Cria o arquivo jar e o implanta no servidor de aplicações--><!-- Cria o arquivo jar e o implanta no servidor de aplicações--> <target name="ejbjar" depends="compile">
<jar jarfile="build/alunoEJB.jaralunoEJB.jar"> <fileset dir="${build.classes.dir}"> <include name="modelo/*.class"/> <include name="negocio/ejb/*.class"/> </fileset> <fileset dir="${basedir}/"> <include name="META-INF/persistence.xml"/> </fileset> </jar> <copy file="build/alunoEJB.jaralunoEJB.jar"
todir="${jboss.home}/server/default/deploy"/> </target>
<!-- Executa o cliente --><!-- Executa o cliente --> <target name="run.client" depends="ejbjar"> <java classname="cliente.ClienteAlunoEJB" fork="yes" dir="."> <classpath refid="classpath"/> </java> </target>
</project>
![Page 402: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/402.jpg)
402
EJB – Enterprise JavaBeans Abra uma janela do prompt de comando. Mude o diretório corrente para a pasta raiz do seu
projeto. Implante a aplicação digitando o comando.
> antant Inicie o servidor de aplicações JBoss executando o
arquivo run.batrun.bat na pasta %JBOSS_HOME%/bin%JBOSS_HOME%/bin Execute o cliente remoto digitando o comando
> ant run.clientant run.client
![Page 403: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/403.jpg)
403
EJB – Enterprise JavaBeans
Ciclo de Vida de um Stateful Session Bean
![Page 404: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/404.jpg)
404
EJB – Enterprise JavaBeans
Ciclo de Vida de um Stateles Session Bean
![Page 405: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/405.jpg)
405
EJB – Enterprise JavaBeans
Ciclo de Vida de um Message-Driven Bean
![Page 406: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/406.jpg)
406
EJB – Enterprise JavaBeans
Exemplo de Aplicação Swing com EJB SessionBean e JPA-Entity
![Page 407: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/407.jpg)
407
Aplicações WEBServlets
![Page 408: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/408.jpg)
408
Requisição / Resposta
Browser
service()
doGet()
doPost()
doPut()
doDelete()
doOption()
doTrave()
Cliente Container Web
Request
Response
![Page 409: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/409.jpg)
409
Aplicações Executadas no Servidor Servidor Web HTTP
JavaServer Web Development Kit (JSWDK). Jakarta TomCatJakarta TomCat. Configuração e ativação do Servidor.
Servlets Formato de um Servlet. API Servlet (pacotes javax.servlet e javax.servlet.http)
. Exemplo (TestServlet.java) Invocando o Servlet via formulário HTML. Gravação de dados de um formulário HTML em um
Banco de Dados Remoto. Exibição de dados de um Banco de Dados em uma
página HTML. Invocando o Servlet através de uma applet.
![Page 410: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/410.jpg)
410
Instalação do Jakarta Tomcat
Baixe o Tomcat no endereço:
http://jakarta.apache.org/tomcat/http://jakarta.apache.org/tomcat/ Clique no link downloaddownload;
Clique no link binariesbinaries;
Procure por Tomcat 5.0.25 keysTomcat 5.0.25 keys (ou mais recente);
Clique em 5.0.25 exe5.0.25 exe (arquivo de instalação
executável).
Após o download, execute o arquivo baixado. Aceite as opções padrão.
Após instalado, inicie o browser e acesse o
endereço http://localhost:8080/http://localhost:8080/
![Page 411: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/411.jpg)
411
Instalação do Plugin EclipseHtmlEditor
Baixe o EclipseHtmlEditorEclipseHtmlEditor no endereço:
http://amateras.sourceforge.jp/
Após o download, descompacte o arquivo na pasta
"plugins" do Eclipse ("c:/eclipse").
O GEF(Graphical Editing Framework) é um pré-requisito
para o EclipseHtmlEditor. Baixe o arquivo do próprio site
do Eclipse e o descompacte na pasta do Eclipse
("c:/eclipse").
![Page 412: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/412.jpg)
412
Instalação do TomcatPlugin para o Eclipse
Baixe o TomcatPluginTomcatPlugin no endereço: http://www.sysdeo.com/eclipse/tomcatplugin
Após o download, descompacte o arquivo na pasta "plugins" do Eclipse ("c:/eclipse/plugins").
Inicie o Eclipse, abra o menu "Window", selecione "Preferences" e clique na opção "Tomcat".
Na janela "Preferences": Marque a versão instalada do Tomcat; Preencha a caixa de texto "Tomcat home" com o nome da pasta de instalação do Tomcat; Em "Context declaration mode", selecione a opção "Server.xml". Aplique as alterações e clique em "Ok".
Inicie o Tomcat através do botão "Start Tomcat" da barra de ferramentas do Eclipse.
Após finalizadas as mensagens na aba "console", inicie o browser e acesse o endereço http://localhost:8080http://localhost:8080
![Page 413: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/413.jpg)
413
Criação de um Projeto Web no Eclipse
Selecione File / New / Project / Java / Tomcat Project.
Preencha a caixa "Project name" com o nome do seu
projeto e clique em "Next".
Preencha a caixa "Context name" com "/Teste" e a
caixa "Subdirectory to set as web application root
(optional)" com "/web" e clique em "Finish".
Configure o plugin EclipseHtmlEditor da Amateras:
Clique com o botão direito no projeto e selecione
"Properties", clique no item "Amateras", preencha a
caixa de texto "Root" com "/web". Clique em "Apply" e
"Ok".
![Page 414: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/414.jpg)
414
Criação de uma classe Servlet no Projeto Web
Clique com o botão direito no projeto e selecione New / Class.
Preencha a caixa "Name" com o nome da classe
"TestServlet".
Preencha a caixa "Package" com o nome do pacote
"servlets".
Clique em "Finish".
Copie o código do slide seguinte no corpo da classe.
Crie o arquivo "web.xml" (nos próximos slides) na pasta
"WEB-INF" clicando com o botão direito na pasta "WEB-INF" e
selecionando New / File.
No browse, abra o endereço http://localhost:8080/Teste/oi
![Page 415: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/415.jpg)
415
Exemplo de recebimento e envio de dadospackage servlets;
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class TestServlet extends HttpServletHttpServlet {public void serviceservice (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException {resp.setContentTyperesp.setContentType ("text/html");PrintWriterPrintWriter out = resp.getWriterresp.getWriter();String nome = req.getParameterreq.getParameter("nome");out.println("<html><head><title> Exemplo Servlet </title>");out.printlnout.println("</head> <body> Oi " + nome + ", tudo bem ?");out.println("</body> </html>");out.closeout.close();
}}
TestServlet.javaNeste exemplo, o servlet recebe
um nome e retorna umamensagem de saudação
![Page 416: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/416.jpg)
416
Arquivo descritor da aplicação web.xml
<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<servlet><servlet-name>TesteTeste</servlet-name><servlet-class>servlets.TestServletservlets.TestServlet</servlet-class>
</servlet><servlet-mapping>
<servlet-name>TesteTeste</servlet-name><url-pattern>/oi/oi</url-pattern>
</servlet-mapping>
</web-app>
![Page 417: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/417.jpg)
417
Formato de um Servletimport java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class TestServlet extends HttpServletHttpServlet {
public void initinit ( ) throws ServletExceptionServletException { }
public void serviceservice (ServletRequestServletRequest req, ServletResponseServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException { }
public void destroydestroy ( ) { }
protect void doGetdoGet (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException { }
protect void doPostdoPost (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException { }
}
![Page 418: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/418.jpg)
418
Pacote javax.servlet javax.servlet.GenericServlet
void destroydestroy ( ) void initinit ( ) void serviceservice (ServletRequest req,
ServletResponse res ) ServletRequest (interface)
ServletInputStream getInputStreamgetInputStream ( ) String getParametergetParameter ( String name ) BufferedReader getReadergetReader ( )
ServletResponse (interface) ServletOutputStream getOutputStreamgetOutputStream ( ) PrintWriter getWritergetWriter ( ) void setContentTypesetContentType ( String type )
![Page 419: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/419.jpg)
419
Pacote javax.servlet.http javax.servlet.http.HttpServlet
void doGetdoGet ( HttpServletRequest req,
HttpServletResponse res ) void doPostdoPost ( HttpServletRequest req,
HttpServletResponse res )
HttpServletRequest (interface)
Derivada de javax.servlet.ServletRequest
HttpServletResponse (interface)
Derivada de javax.servlet.ServletResponse void sendRedirectsendRedirect ( String location )
![Page 420: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/420.jpg)
420
Compilação de Servlets no Eclipse
Para se compilar um servlet no Eclipse é necessário que se
adicione o arquivo servlet.jarservlet.jar (Tomcat 4.x) ou servlet-servlet-
api.jarapi.jar (Tomcat 5.x ou mais recente) no classpath do Eclipse.
Para tanto, no Eclipse, Selecione o menu "ProjectProject" opção
"PropertiesProperties", clique em "Java Build PathJava Build Path", selecione a aba
"LibrariesLibraries", clique no botão "Add External Jars...Add External Jars..." selecione
o arquivo servlet-api.jarservlet-api.jar em "[Tomcat_Home]\common\[Tomcat_Home]\common\
liblib", clique em "abrirabrir" e finalmente clique em "okok".
Pode-se utilizar também um build do Apache Ant, que é o
mais recomendável.
![Page 421: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/421.jpg)
421
Árvore de diretórios da Aplicação
[Tomcat_Home]
Webapps
Sua_AplicaçSua_Aplicaçãoão
WEB-INF
classes
Arquivos .html .html e applets applets
Arquivo web.xmlweb.xml
Servlets (.class)
A estrutura pode estar em uma árvore fora do Tomcat,basta editar o arquivo server.xml do diretório de configuraçãodo Tomcat ([TOMCAT_HOME]\conf) e incluir um novo contexto:
<Context path= "/Teste/Teste" docBase="c:\teste\c:\teste\" debug="0" />
![Page 422: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/422.jpg)
422
Como testar o Servlet exemplo no Tomcat
Crie a pasta TesteTeste sob [Tomcat_Home]\Webapps[Tomcat_Home]\Webapps.
Crie a pasta WEB-INFWEB-INF sob TesteTeste. E a pasta classesclasses
sob WEB-INFWEB-INF
Copie o arquivo de classe Testservlet.class no
diretório Teste\WEB-INF\classesTeste\WEB-INF\classes
Crie o arquivo web.xmlweb.xml mostrado no slide anterior na
pasta WEB-INFWEB-INF.
Verifique se o Tomcat está sendo executado.
Abra o endereço http://localhost:8080/Teste/oihttp://localhost:8080/Teste/oi
![Page 423: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/423.jpg)
423
Como testar o Servlet exemplo no JSWDK Descarregue o JavaServer Web Development Kit a partir
do endereço: http://java.sun.com/products/jsp/download.html
Istale o kit no diretório \jswdk\jswdk Mude a propriedade port para port NMTOKEN “80”port NMTOKEN “80” no
arquivo \jswdk\webserver.xml Compile o código do servlet: javac –classpath \jswdk\javac –classpath \jswdk\
lib\servlet.jar;. TestServlet.javalib\servlet.jar;. TestServlet.java Copie o arquivo de classe Testservlet.class no diretório \\
jswdk\webpages\WEB-INF\servletsjswdk\webpages\WEB-INF\servlets Edite o arquivo \jswdk\webpages\WEB-INF\mappings. \jswdk\webpages\WEB-INF\mappings.
propertiesproperties, incluindo a linha: /testservlet=testservlet/testservlet=testservlet Edite o arquivo \jswdk\webpages\WEB-INF\servlets.\jswdk\webpages\WEB-INF\servlets.
propertiesproperties, incluindo a linha: testservlet.code=TestServletestservlet.code=TestServlet
Copie os arquivos testservlet.htmltestservlet.html e TestServlet.classTestServlet.class no diretório \jswdk\webpages\jswdk\webpages
Inicie o servidor da Web executando: \jswdk\startserver\jswdk\startserver Abra o endereço http://localhost/testservlet.htmlhttp://localhost/testservlet.html
![Page 424: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/424.jpg)
424
Instalação do Apache ANT
Baixe o Ant do site: http://ant.apache.org
Descompacte o arquivo na raíz do hd.
Renomeie a pasta para "ant".
Crie uma variável de ambiente chamada
"ANT_HOME" apontando para a pasta "<drive>:\
ant"
Inclua a pasta "ANT_HOME\bin" no path do
sistema.
Crie um buildfile para sua aplicação. (slides seguintes)
Integre o Ant com o Eclipse. (slides seguintes)
![Page 425: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/425.jpg)
425
Build de aplicação web usando o ANT<?xml version="1.0" encoding="iso-8859-1" ?>
<project name="loja" default= "all""all" > <target name="all"name="all" depends= "compile,war,deploy""compile,war,deploy" > </target> <target name="init"name="init" > <property name="src" value="./src" /> <property name="bin" value="./WEB-INF/classes" /> <property name="war" value= "./loja.war""./loja.war" />
<property name="tomcatHome" value= "c:/tomcat""c:/tomcat" /> <property name="deployDir" value="${tomcatHome}/webapps"
/> <property name="servletApi" value="$
{tomcatHome}/common/lib/servlet-api.jarservlet-api.jar" /> </target>
![Page 426: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/426.jpg)
426
Build de aplicação web usando o ANT <target name="compile"name="compile" depends="init"> <javac srcdir="${src}" destdir="${bin}"> <classpath path= "WEB-INF/lib/connectorj.jar""WEB-INF/lib/connectorj.jar" /> <classpath path="${servletApi}" /> </javac> </target> <target name="war"name="war" depends="init"> <jar destfile="${war}" > <fileSet dir="." includes="*.html" /> <fileSet dir="." includes="WEB-INF/**" /> </jar> </target> <target name="deploy"name="deploy" depends="war"> <copy file="${war}" todir="${deployDir}" overwrite="yes"/> </target></project>
![Page 427: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/427.jpg)
427
Integrando o ANT com o Eclipse
Selecione o menu "Project"; Selecione "properties"; Selecione "Builders"; Clique em "new"; Escolha "Ant Build"; Em "Name Buildfile" clique em xxx e selecione o
arquivo de build criado anteriormente; Com o build selecionado clique no botão "up"
para que o "ant build" apareça em primeiro lugar na lista.
![Page 428: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/428.jpg)
428
Invocando um servlet
<html><head>
<title> Formulário com servlet </title></head>
<body><h1>Teste de formulário acionando uma servlet
</h1><form actionaction= "oi" methodmethod="get">
<p>Nome: <input type="text" name="nome"><p> <input type="submit" value="Enviar">
</form></body>
</html>
Teste.htmlEsta página html invoca o servlet
TestServlet através de um formulário
![Page 429: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/429.jpg)
429
Acesso a dados no MySQL por um servlet
Para se acessar um banco de dados MySQL através de um servlet utilizando o Tomcat é necessário que o driver do MySQL "Connector/J" presente no arquivo
mysql-connector-java-3.1.0-alpha.jarmysql-connector-java-3.1.0-alpha.jar seja copiado para o diretório "Tomcat_Home\Tomcat_Home\
common\libcommon\lib".
![Page 430: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/430.jpg)
430
Gravando dados de um formulário
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.sql.*;
public class GravaServlet extends HttpServletHttpServlet {Connection con = null;PreparedStatement pst = null;
public void serviceservice (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException {resp.setContentTyperesp.setContentType ("text/html");PrintWriterPrintWriter out = resp.getWriterresp.getWriter();out.println("<html><head><title> Cadastro de funcionários");out.println("</title> </head> <body> <h1>");
GravaServlet.javaEste exemplo recebe dados de um
formulário e os grava em uma tabelade banco de dados.
![Page 431: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/431.jpg)
431
Gravando dados de um formulário (cont.)
int result = 0;try { Class.forName("CLASSE DO DRIVERCLASSE DO DRIVER"); con = DriverManager.getConnection("URL DE CONEXÃOURL DE CONEXÃO"); String sql = "INSERT INTO tabelatabela (nome, cargo) VALUES ( ?, ?) "; pst = con.prepareStatement( sql ); String nome = req.getParameterreq.getParameter("nome"); String cargo = req.getParameterreq.getParameter("cargo"); pst.clearParametersclearParameters( ); pst.setStringsetString (1, nome); pst.setStringsetString (2, cargo); result = pst.executeUpdateexecuteUpdate( ); con.close();} catch (Exception e) { out.println(e); }if ( result == 1 ) out.printlnout.println("Dados gravados com sucesso");else out.printlnout.println("Problemas no cadastramento");out.println("</h1></body> </html>");out.closeout.close();
}}
![Page 432: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/432.jpg)
432
Lendo dados de um Banco de Dadosimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.sql.*;
public class LerServlet extends HttpServletHttpServlet {Connection con = null;PreparedStatement pst = null;ResultSet rs = null;
public void serviceservice (HttpServletRequestHttpServletRequest req, HttpServletResponseHttpServletResponse resp)
throws ServletExceptionServletException, IOExceptionIOException {resp.setContentTyperesp.setContentType ("text/html");PrintWriterPrintWriter out = resp.getWriterresp.getWriter();out.println("<html><head><title> Cadastro de funcionários");out.println("</title> </head> <body> <h1>");
LerServlet.javaEste exemplo lê dados de uma tabela de banco de dados e os
exibe na forma de uma tabela HTML
![Page 433: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/433.jpg)
433
Lendo dados de um Banco de Dados (cont.)
try { Class.forName("CLASSE DO DRIVERCLASSE DO DRIVER"); con = DriverManager.getConnection("URL DE CONEXÃOURL DE CONEXÃO"); String sql = "SELECT * FROM tabelatabela ORDER BY nome"; pst = con.prepareStatement( sql );} catch(Exception e) {out.println(e); }out.println("<table border='1'><tr> <th> Nome <th> Cargo");try {
rs = pst.executeQueryexecuteQuery( );while ( rs.nextnext( ) ) {
out.printlnout.println("<tr><td>" + rs.getStringgetString("nome") );out.println out.println ("<td>" + rs.getStringgetString("cargo") );
}} catch (Exception e) {out.println(e); }out.println("</table></body> </html>");out.closeout.close();
}
![Page 434: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/434.jpg)
434
Lendo dados de um Banco de Dados (cont.)
public void destroydestroy ( ) {try {
if (rs != null)rs.close ( );
if (con != null)con.close( );
} catch (Exception e) { }}
}
![Page 435: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/435.jpg)
435
Buscando dados de um Banco de Dados
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;import java.sql.*;
public class BuscaServlet extends HttpServlet {Connection con = null;PreparedStatement pst = null;
public void service (HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {resp.setContentType ("text/html");PrintWriter out = resp.getWriter();out.println("<html><head><title> Cadastro de funcionários");out.println("</title> </head> <body> <h1>");
![Page 436: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/436.jpg)
436
Buscando dados de um Banco de Dados
try {
Class.forName( "com.mysql.jdbc.Driver" );
String url = "jdbc:mysql://127.0.0.1:3306/banco" ;
con = DriverManager.getConnection(url, "root", "");
String sql = "Select * From "Select * From tabelatabela Where Where chavechave like ? Order By like ? Order By
campocampo"";;
pst = con.prepareStatement( sql );
} catch(Exception e) { out.println(e); }
String chave = req.getParameter("chave");
out.println("<table border='1'><tr> <th> Nome <th> Cargo <th> Salário");
![Page 437: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/437.jpg)
437
Buscando dados de um Banco de Dados
try { pst.setString(1, "%" + pst.setString(1, "%" + chavechave + "%"); + "%");
rs = pst.executeQuery( ); while ( rs.next( ) ) { out.println("<tr><td>" + rs.getString("nome") ); out.println ("<td> <img src='<img src='" + rs.getString("rs.getString("fotofoto")") + "'>'>" ); out.println ("<td> <a href = 'apagar?cod=<a href = 'apagar?cod=" + rs.getString("rs.getString("idid")")
+ "'>'>" ); out.println ("<img src='lixo.gif'> </a></a>" ); }
} catch (Exception e) {out.println(e); } out.println("</table></body> </html>"); out.close(); }}
![Page 438: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/438.jpg)
438
Apagando dados de um Banco de Dados
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;import java.sql.*;
public class ApagaServlet extends HttpServlet { Connection con = null; PreparedStatement pst = null;
public void service (HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { resp.setContentType ("text/html"); PrintWriter out = resp.getWriter(); out.println("<html><head><title> Cadastro de funcionários"); out.println("</title> </head> <body> <h1>");
![Page 439: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/439.jpg)
439
Apagando dados de um Banco de Dados
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/banco";
con = DriverManager.getConnection(url, "root", "");
String sql = "DELETE FROM "DELETE FROM tabelatabela WHERE WHERE idid = ?" = ?";
pst = con.prepareStatement( sql );
} catch(Exception e) {
out.println(e);
}
int result = 0;
String cod = req.getParameter("cod");String cod = req.getParameter("cod");
![Page 440: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/440.jpg)
440
Apagando dados de um Banco de Dados
try { pst.clearParameters( ); pst.setInt (1, Integer.parseInt(cod));pst.setInt (1, Integer.parseInt(cod)); result = pst.executeUpdate( ); } catch (Exception e) {
out.println(e); } if ( result == 1 ) out.println("Dados excluídos com sucesso"); else out.println("Problemas na exclusão"); out.println("</h1></body> </html>"); out.close(); }}
![Page 441: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/441.jpg)
441
Invocando um servlet via Appletimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.net.*;java.net.*;import java.io.*;java.io.*;
public class TestServApp extends JApplet implements ActionListener {JTextField txtnome, txtStatus;JButton btnsend;JEditorPaneJEditorPane pagina;public void init () {
JLabel lblnome = new JLabel ("Nome: ");txtnome = new JTextField(20);txtStatus = new JTextField(" ", 20);btnsend = new JButton("Enviar");btnsend.addActionListener(this);
TestServapp.javaEste exemplo usa uma applet para enviar e receber dados do servletTestServlet visto anteriormente
![Page 442: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/442.jpg)
442
Invocando um servlet via Applet (cont.)
Container cp = getContentPane( );cp.setLayout( new FlowLayout( ) );cp.add (lblnome);cp.add (txtnome);cp.add (btnsend);cp.add (txtStatus);pagina = new JEditorPaneJEditorPane ("text/html","<html><body> Oi </body></html>" );("text/html","<html><body> Oi </body></html>" );cp.add (pagina);
}public void actionPerformed(ActionEvent evt) {
try {URLURL app = new
URL("http://localhost/Teste/Test");URL("http://localhost/Teste/Test");URLConnectionURLConnection con = app.openConnectionopenConnection( );con.setDoInputsetDoInput(true);con.setDoOutputsetDoOutput(true);
![Page 443: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/443.jpg)
443
Invocando um servlet via Applet (cont.)
PrintWriterPrintWriter out = new PrintWriter(con.getOutputStreamgetOutputStream( ));
out.printlnprintln("nome=" + txtnome.getText() );out.closeclose();BufferedReaderBufferedReader in = new BufferedReaderBufferedReader
(new InputStreamReaderInputStreamReader(con.getInputStreamgetInputStream()));String line;txtStatus.setText("");while ( (line = in.readLinereadLine( ) ) != null ) {
String texto = new String (txtStatus.getText() + line);txtStatus.setText(texto);
}pagina.setText( txtStatus.getText());
} catch (Exception e) {System.out.println (e);
}}
}
![Page 444: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/444.jpg)
444
Utilizando a Sessão HTTP (HttpSession)
import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class SessaoServlet extends HttpServlet { public void service(HttpServletRequest req,
HttpServletResponse resp) throws ServletException, IOException { HttpSession sessao = req.getSession();HttpSession sessao = req.getSession(); sessao.setAttribute("dados", new Integer(0));sessao.setAttribute("dados", new Integer(0)); resp.sendRedirectsendRedirect(resp.encodeURL("respostaresposta")); }}
SessaoServlet.javaEste exemplo armazenar
dados na sessão Http
![Page 445: Curso de Linguagem Java 2010 - Marcos Mendes](https://reader038.vdocuments.com.br/reader038/viewer/2022103000/5571f89e49795991698dc71a/html5/thumbnails/445.jpg)
445
Utilizando a Sessão HTTP (HttpSession)
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class RespostaServlet extends HttpServlet { public void service (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType ("text/html"); PrintWriter out = resp.getWriter( ); out.println("<html> <body> <h1>"); HttpSession sessao = req.getSession( );HttpSession sessao = req.getSession( ); Integer dado = (Integer) sessao.getAttribute("dados");Integer dado = (Integer) sessao.getAttribute("dados"); dado = new Integer(dado.intValue( ) + 1); sessao.setAttribute("dados", dado);sessao.setAttribute("dados", dado); out.println("" + dado.intValue( ) + "</h1></body> </html>"); out.close( ); }}
RespostaServlet.javaEste exemplo recuperadados da sessão Http