Você está na página 1de 113
D ESENVOLVIMENTO DE APLICAÇÕES JAVA UTILIZANDO A IDE NETBEANS Alexander Haroldo da Rocha Renato de
D ESENVOLVIMENTO DE APLICAÇÕES JAVA UTILIZANDO A IDE NETBEANS Alexander Haroldo da Rocha Renato de
D ESENVOLVIMENTO DE APLICAÇÕES JAVA UTILIZANDO A IDE NETBEANS Alexander Haroldo da Rocha Renato de

DESENVOLVIMENTO DE APLICAÇÕES JAVA UTILIZANDO A IDE NETBEANS

Alexander Haroldo da Rocha Renato de Jesus Manzoni

D ESENVOLVIMENTO DE APLICAÇÕES JAVA UTILIZANDO A IDE NETBEANS Alexander Haroldo da Rocha Renato de Jesus
D ESENVOLVIMENTO DE APLICAÇÕES JAVA UTILIZANDO A IDE NETBEANS Alexander Haroldo da Rocha Renato de Jesus
T ÓPICOS ABORDADOS Revisão dos pilares da programação orientada à objeto; Noções primárias de Engenharia

TÓPICOS ABORDADOS

Revisão dos pilares da programação orientada à objeto;

Noções primárias de Engenharia de Software;

Classpath e .Jar (Java ARquive);

Pacote javax.swing.*;

Conexão com banco de dados via JDBC;

Tratamento de Exceções com try-catch-finally;

Utilizando o debug do NetBeans;

Desenhando primitivas geométricas sobrescrevendo o método paintComponent();

geométricas sobrescrevendo o método paintComponent (); B IBLIOGRAFI A Deitel, H. M; Deitel, P. J. Java,

BIBLIOGRAFIA

Deitel, H. M; Deitel, P. J. Java, como programar , 6ª ed.

Horstmann, Cay S. e Cornell, Gary. Core Java 2 – Recursos Avançados, vol 2, MakRon Books, 2001

Seu maior ajudante: www.google.com

S. e Cornell, Gary. Core Java 2 – Recursos A vançados , vol 2, MakRon Books,
C ONHECENDO A IDE N ET B EANS D esco brind o o am bi
C ONHECENDO A IDE N ET B EANS D esco brind o o am bi
C ONHECENDO A IDE N ET B EANS D esco brind o o am bi

CONHECENDO A IDE NETBEANS

Descobrindo o ambiente e aprendendo as suas facilidades

C ONHECENDO A IDE N ET B EANS D esco brind o o am bi en
C ONHECENDO A IDE N ET B EANS O NetBeans é uma IDE Java desenvolvida
C ONHECENDO A IDE N ET B EANS O NetBeans é uma IDE Java desenvolvida

CONHECENDO A IDE NETBEANS

O NetBeans é uma IDE Java desenvolvida pela empresa Sun Microsystems. É um ambiente de desenvolvimento integrado gratuito e de código aberto para desenvolvedores de software. A IDE é executada em muitas plataformas, como Windows, Linux, Solaris e MacOS.

Dica de Programação - Conheça e use todas as facilidades que a IDE tem a
Dica de Programação
- Conheça e use todas as facilidades que a IDE
tem a oferecer: Hiperlinks, AutoComplet, Solução
automática de erros, etc.
e use todas as facilidades que a IDE tem a oferecer: Hiperlinks, AutoComplet, Solução automática de
R EVISÃO DE O RIENTAÇÃO À O BJETO R ev i san d o os
R EVISÃO DE O RIENTAÇÃO À O BJETO R ev i san d o os
R EVISÃO DE O RIENTAÇÃO À O BJETO R ev i san d o os

REVISÃO DE ORIENTAÇÃO À OBJETO

Revisando os principais conceitos de orientão a objeto, aplicando essas definições na linguagem Java

san d o os pr i nc i pa i s conce it os d e
POO – REVISÃO DOS CONCEITOS Motivação: Abstrair os conceitos do mundo real Identificar estes conceitos
POO – REVISÃO DOS CONCEITOS Motivação: Abstrair os conceitos do mundo real Identificar estes conceitos

POO – REVISÃO DOS CONCEITOS

Motivação:

Abstrair os conceitos do mundo real Identificar estes conceitos como objetos

Pilares da Programação Orientada a Objeto:

Abstração. Encapsulamento; Herança; Polimorfismo;

como objetos Pilares da Programação Orientada a Objeto: Abstração. Encapsulamento; Herança; Polimorfismo;
POO – REVISÃO DOS CONCEITOS Definindo uma Classe: Abstração: public class Pessoa { String nome;
POO – REVISÃO DOS CONCEITOS Definindo uma Classe: Abstração: public class Pessoa { String nome;

POO – REVISÃO DOS CONCEITOS

Definindo uma Classe:

Abstração:

public class Pessoa { String nome; int idade; boolean sexo;

class Pessoa { String nome; int idade; boolean sexo; Atributos da Classe } public Pessoa ()

Atributos da Classe

}

public Pessoa() {

}

boolean sexo; Atributos da Classe } public Pessoa () { } Construtor: toda vez que se

Construtor: toda vez que se cria um objeto, o construtor é chamado.

da Classe } public Pessoa () { } Construtor: toda vez que se cri a um
POO – REVISÃO DOS CONCEITOS Encapsulamento: Proteger os atributos da classe. Os Métodos encapsulam os
POO – REVISÃO DOS CONCEITOS Encapsulamento: Proteger os atributos da classe. Os Métodos encapsulam os

POO – REVISÃO DOS CONCEITOS

Encapsulamento:

Proteger os atributos da classe.

Os Métodos encapsulam os atributos da classe.

Omitir detalhes de implementação.

O método oferece um serviço, sem informar como irá fazê-lo.

public class Pessoa {

}

void setNome(String nome) { this.nome = nome; } void setSexo(boolean sexo) { this.sexo = sexo; } void setIdade(int idade) { if( idade > 0 ) this.idade = idade;

}

} void setIdade ( int idade) { if ( idade > 0 ) this .idade =

Garante a integridade do atributo idade

} void setIdade ( int idade) { if ( idade > 0 ) this .idade =
POO – REVISÃO DOS CONCEITOS pu bli c class P essoa { String getNome ()
POO – REVISÃO DOS CONCEITOS pu bli c class P essoa { String getNome ()

POO – REVISÃO DOS CONCEITOS

public class Pessoa {

String getNome() { return nome; } boolean getSexo() { return sexo; } int getIdade() { return idade; }

}

float getSalario( ) { return salario;
float getSalario(
)
{
return salario;

}

Oculta detalhes de implementação

int g etIdade () { return idade ; } } float getSalario( ) { return salario;
POO – REVISÃO DOS CONCEITOS Herança: Classes (sub-classe) que herdam atributos e métodos d e
POO – REVISÃO DOS CONCEITOS Herança: Classes (sub-classe) que herdam atributos e métodos d e

POO – REVISÃO DOS CONCEITOS

Herança:

Classes (sub-classe) que herdam atributos e métodos de outra classe (super-classe):

public class Professor extends Pessoa { String cursoSuperior; int anoFormação;

}

public class Funcionario extends Pessoa { int experienciaProfissional; String departamento;

}

int anoFormação; } public class Funcionario extends Pessoa { int experienciaProfissional; String departamento; }
POO – REVISÃO DOS CONCEITOS Polimorfismo: Sobrecarga de Métodos: Mét od os possuem o mesmo
POO – REVISÃO DOS CONCEITOS Polimorfismo: Sobrecarga de Métodos: Mét od os possuem o mesmo

POO – REVISÃO DOS CONCEITOS

Polimorfismo:

Sobrecarga de Métodos:

Métodos possuem o mesmo nome, porém número diferentes de parâmetros.

o mesmo nome, porém número diferentes de parâmetros. public class Pessoa { float getSalario ( float
o mesmo nome, porém número diferentes de parâmetros. public class Pessoa { float getSalario ( float

public class Pessoa { float getSalario(float impostoA) { return (salario - impostaA);

}

float getSalario(float impostoA, float impostoB) { return (salario - impostaA - impostoB);

}

- impostaA); } float getSalario ( float impostoA, float impostoB) { return (salario - impostaA -
POO – REVISÃO DOS CONCEITOS Sobrescrita de Métodos: public class Professor extends Pessoa { float
POO – REVISÃO DOS CONCEITOS Sobrescrita de Métodos: public class Professor extends Pessoa { float

POO – REVISÃO DOS CONCEITOS

Sobrescrita de Métodos:

public class Professor extends Pessoa { float getSalario(float impostoA) { return (salario - impostoA + bonus);

}

}

impostoA) { re turn (salario - impostoA + bonus); } } Métodos possuem o mesmo nome

Métodos possuem o mesmo nome e os mesmos parâmetros, porém o corpo do método é diferente.

- impostoA + bonus); } } Métodos possuem o mesmo nome e os mesmos parâmetros, porém
O QUE VOCÊ PRECISA SABER EM JAVA Toda classe em Java herda automaticamente da classe
O QUE VOCÊ PRECISA SABER EM JAVA Toda classe em Java herda automaticamente da classe

O QUE VOCÊ PRECISA SABER EM JAVA

Toda classe em Java herda automaticamente da classe Object. Instanciar objetos:

Pessoa p = new Pessoa();

Saber usar os modificadores de acesso:

private: somente a classe que contém seus atributos e métodos tem acesso a esses. public: Classes que contém atributos e métodos public permitem que outras classes tenham acesso a esses.

Declarar classes abstratas. Isto permite que classes não sejam instanciadas.

public abstract class Faculdade {

}

esses. Declarar classes abstratas. Isto permite que classes não sejam instanciadas. public abstract class Faculdade {
O QUE VOCÊ PRECISA SABER EM JAVA Toda classe tem o método toString (). Esse

O QUE VOCÊ PRECISA SABER EM JAVA

Toda classe tem o método toString(). Esse método retorna uma representação String do objeto.

É importante sobrescrever este método.

public class Pessoa { String toString()

{

return nome;

}

Ex:

}

Pessoa p = new Pessoa(); System.out.println(p);

class Pessoa { String toString () { return nome; } Ex: } Pessoa p = new
N OÇÕES DE E NGENHARIA DE S OFTWARE N oç õ es bá si cas
N OÇÕES DE E NGENHARIA DE S OFTWARE N oç õ es bá si cas
N OÇÕES DE E NGENHARIA DE S OFTWARE N oç õ es bá si cas

NOÇÕES DE ENGENHARIA DE SOFTWARE

Nões sicas de construção de um software

N OÇÕES DE E NGENHARIA DE S OFTWARE N oç õ es bá si cas d
N OÇÕES DE E NGENHARIA DE S OFTWARE Separar o sistema em três camadas básicas:
N OÇÕES DE E NGENHARIA DE S OFTWARE Separar o sistema em três camadas básicas:

NOÇÕES DE ENGENHARIA DE SOFTWARE

Separar o sistema em três camadas básicas:

interface, estrutura e persistência; Organizar-se, seguindo padrões de desenvolvimento de software; Dividir o desenvolvimento do software em fases, cada fase tratando uma parte da aplicação. O fim de uma fase constitui na entrada da outra fase; Conhecer noções básicas de atribuição de responsabilidades; Condicionar ao reuso; Não misturar Interface com Estrutura e vice-versa;

de atribuição de res p onsabilidades; Condicionar ao reuso; Não misturar Interface com Estrutura e vice-versa
NOÇÕES DE ENGENHARIA DE SOFTWARE Boa Prática de Programação - Utilize padrões de escrita de
NOÇÕES DE ENGENHARIA DE SOFTWARE
Boa Prática de Programação
- Utilize padrões de escrita de código.
o
Nome de variáveis e nome de métodos: primeira
minúscula e as primeiras da próxima palavra em
maiúscula: nomePessoa, inserirFimFila(
)
o
Nome de métodos, como verbos no infinitivo:
carregarPessoa(), imprimirSaldo()
o
Nome de pacotes, classes e imagens começando com
letras maiúsculas;
o
Comentários do tipo /*
*/ para principais e do tipo //
(linha) para comentários internos;
o
Nunca usar _ ou qualquer outro caractere em nome de
atributos;
C LASSPATH E .J AR O CLASSPATH é uma important e var iá vel de
C LASSPATH E .J AR O CLASSPATH é uma important e var iá vel de

CLASSPATH E .JAR

O CLASSPATH é uma importante varvel de ambiente do Java. Essa variável é importante tanto para compilar quanto para executar o seu programa, já que especifica onde estão armazenados os arquivos e bibliotecas necessários, tanto para a compilação, quanto para a execução.

JAR significa Java ARchive, e é simplesmente um arquivo ZIP normal, com uma extensão diferente apenas. Estes arquivos são usados para facilitar a distribuição de pacotes e manter a simplicidade na hora de configurar os ambientes de desenvolvimento, uma vez que é possível colocar todos seus pacotes dentro de um único arquivo JAR

os ambi entes de desenvolvimento, uma vez que é possível colocar todos seus pacotes dentro de
C LASSES E MÉTODOS IMPORTANTES Métodos estáticos das classes Integer, Short, Float, etc: Integer .
C LASSES E MÉTODOS IMPORTANTES Métodos estáticos das classes Integer, Short, Float, etc: Integer .

CLASSES E MÉTODOS IMPORTANTES

Métodos estáticos das classes Integer, Short, Float, etc:

Integer.valueOf(String str | int i); Integer.parseInt(String str);

Métodos básicos em algumas classes do swing

setVisible(true | false); setText(string); setEnable(true | false);

Classes LinkedList<Class> e ArrayList<Class>; Conceitos de herança e abstrações de classe para sua utilização em listas encadeadas;

rra y List<Class> ; Conceitos de herança e abstrações de classe para sua utilização em listas
P ACOTE JAVAX . SWING .*; P aco t e sw i ng d e
P ACOTE JAVAX . SWING .*; P aco t e sw i ng d e
P ACOTE JAVAX . SWING .*; P aco t e sw i ng d e

PACOTE JAVAX.SWING.*;

Pacote swing de interface gráfica do java

P ACOTE JAVAX . SWING .*; P aco t e sw i ng d e int
JAVAX . SWING .* Pacote java para desenvolvimento de aplicações com interface gráfica. Substituiu a

JAVAX.SWING.*

JAVAX . SWING .* Pacote java para desenvolvimento de aplicações com interface gráfica. Substituiu a awt

Pacote java para desenvolvimento de aplicações com interface gráfica. Substituiu a awt como padrão java, desde o Java 1.2 (Java 2) Cada componente terá vários eventos associados a ele. Alguns eventos são: actionPerformed( ),

KeyPressed(

MouseDragged(

),

MousePressed(

)

),

ItemStateChange(

),

etc.

Basicamente temos Contêineres e Componentes. Os Conteiners encapsulam Components.

Boa Prática de Programação - Procure não utilizar os nomes de atributos sugeridos como default
Boa Prática de Programação
- Procure não utilizar os nomes de atributos
sugeridos como default pelo NetBeans, como
jButton1. Mude para botaoCadastrar, por exemplo
os nomes de atributos sugeridos como default pelo NetBeans, como jButton1. Mude para botaoCadastrar, por exemplo
JAVAX . SWING .JF RAME Frame utilizado para formulários ou telas principais do sistema. O

JAVAX.SWING.JFRAME

JAVAX . SWING .JF RAME Frame utilizado para formulários ou telas principais do sistema. O método

Frame utilizado para formulários ou telas principais do sistema. O método setVisible(true) torna-o visível e o método dispose() fecha o frame. Se for o frame principal, feche com System.exit(0)

this setExtendedState(this MAXIMIZED BOTH)

.

.

_

;

Constantes usadas no método acima:

- NORMAL: Tela no estado normal

- ICONIFIED: Tela no estado minimizado

- MAXIMIZED_HORIZ: Expansão horizontal

- MAXIMIZED_VERT: Expansão vertical

- MAXIMIZED_BOTH: Tela maximizada

- MAXIMIZED_HORIZ: Expansão horizontal - MAXIMIZED_VERT: Expansão vertical - MAXIMIZED_BOTH: Tela maximizada
JL ABEL Com p onente texto p ara formulários JB UTTON Componente botão. Assim como
JL ABEL Com p onente texto p ara formulários JB UTTON Componente botão. Assim como

JLABEL

Componente texto para formulários

JL ABEL Com p onente texto p ara formulários JB UTTON Componente botão. Assim como qualquer

JBUTTON

Componente botão. Assim como qualquer outro componente swing, ele é bem genérico. Não é utilizado apenas como botão simples, mas também como botões de barra de ferramentas, panels, etc.

também como botões de barra de ferramentas, p anels, etc. JC HECK B OX Caixa de

JCHECKBOX

Caixa de seleção simples. O método isSelected() retorna se está ou não setado.

p anels, etc. JC HECK B OX Caixa de seleção simples. O método isSelected () retorna
p anels, etc. JC HECK B OX Caixa de seleção simples. O método isSelected () retorna
JR ADIO B UTTON E B UTTON G ROUP Caixas de sele ç ão p
JR ADIO B UTTON E B UTTON G ROUP Caixas de sele ç ão p
JR ADIO B UTTON E B UTTON G ROUP Caixas de sele ç ão p

JRADIOBUTTON E BUTTONGROUP

Caixas de seleção para grupo de seleções. Cada radioButton é um campo de seleção. Crie um buttonGroup para formar um grupo de seleção e então associe cada radioButton ao grupo que desejar, através do atributo buttonGroup.

formar um grupo de seleção e então associe cada radioButton ao grupo que desejar, através do
JT EXT F IELD Campo de escrita simples . Como não há limitação de número

JTEXTFIELD

JT EXT F IELD Campo de escrita simples . Como não há limitação de número de
JT EXT F IELD Campo de escrita simples . Como não há limitação de número de

Campo de escrita simples. Como não há limitação de número de caracteres, deveremos utilizar um outro artifício para tal. Através de uma classe chamada FixedLengthDocument, feita especialmente para esse caso, podemos setar o tamanho máximo do campo.

jTextFieldNome.setDocument( new FixedLengthDocument(30) );

JPASSWORDFIELD

( new FixedLengthDocument ( 30 ) ); JP ASSWORD F IELD O mesmo p ara um

O mesmo para um JTextField, porém, existirá um caractere indicativo de senha. ( )

( 30 ) ); JP ASSWORD F IELD O mesmo p ara um JTextField , porém,

JFORMATTEDTEXTFIELD

JF ORMATTED T EXT F IELD Campo de escrita formatada Exemplos de aplicação: RG, CPF, Datas,

Campo de escrita formatada Exemplos de aplicação: RG, CPF, Datas, etc

// Criando uma máscara de formatão MaskFormatter formatterData = new MaskFormatter(“##/##/####”); // Instalando a máscara no jFormattedTextField formatterData.install(jFTextFieldNasc); // Setando um texto – 10/12/1990 jFTextFieldNasc.setText(“10121990”); // Aceita com ou sem ‘/’

# - Dígito

H

U

L

A

?

Hexadecimal

– Caractere em maiúsculo

– Caractere em minúsculo

– Caractere alfa-numérico

– Caractere qualquer

* - Qualquer tecla \ - Literal

– Caractere em minúsculo – C aractere a lf a-num érico – Caractere qualquer * -
JT EXT P ANE Área extensa p ara textos sem formatação JT OGGLE B UTTON
JT EXT P ANE Área extensa p ara textos sem formatação JT OGGLE B UTTON

JTEXTPANE

Área extensa para textos sem formatação

JTOGGLEBUTTON

Componente botão do tipo pressionado e não pressionado. Segue as mesmas características e generalidade do JButton

JPANEL

Base que sustenta um pequeno conjunto de componentes. Tem generalidades específicas que veremos mais adiante.

ANEL Base q ue sustenta um p e q ueno conjunto de componentes. Tem generalidades específicas
E XERCÍCIO 1 A Crie uma classe Pessoa com os seguintes campos: nome (String limitada
E XERCÍCIO 1 A Crie uma classe Pessoa com os seguintes campos: nome (String limitada

EXERCÍCIO 1A Crie uma classe Pessoa com os seguintes campos:

nome (String limitada de tamanho 20), idade (short), dataInscricao (String formatada), moraSozinho (boolean). Por enquanto, não se preocupe com sets e gets. Lembre-se das técnicas de Engenharia de Software:

Interface e Estrutura devem estar em pacotes separados. Crie dois pacotes com esses nomes; Faça um formulário sobre um jPanel com borda (TitledBorder), como mostra o arquivo ex1a.jar. Ao clicar no botão Cadastrar, instancie um objeto da classe pessoa e em Cancelar, feche o frame. Os Botões devem estar fora do painel!

, instancie um objeto da classe pessoa e em Cancelar, feche o frame. Os Botões devem
JS CROLL B AR E JS CROLL P ANE Barra de rola g em sim
JS CROLL B AR E JS CROLL P ANE Barra de rola g em sim

JSCROLLBAR E JSCROLLPANE

Barra de rolagem simples e em caixas. Componentes, como tabela, são utilizados dentro de um JScrollPane

JTABBEDPANE

Caixa com abas. A estrutura de um TabbedPane é simples, sendo que cada aba será adicionada através de um Panel.

A NE Caixa com abas. A estrutura de um TabbedPane é simples, sendo que cada aba
A NE Caixa com abas. A estrutura de um TabbedPane é simples, sendo que cada aba
E XERCÍCIO 1 B Faça um tabbedPane e coloque duas abas: o panel com o

EXERCÍCIO 1B

E XERCÍCIO 1 B Faça um tabbedPane e coloque duas abas: o panel com o pequeno

Faça um tabbedPane e coloque duas abas: o panel com o pequeno formulário com o nome de Dados Gerais e outro vazio com o nome de Dados Pessoais (nome do atributo – Tab Title) O formulário da nova aba deverá conter campos para CPF e RG, devidamente formatados, como mostra o arquivo ex1b.jar. Os botões de Cadastrar e Cancelar devem estar fora do painel de abas.

formatados, como mostra o arquivo ex1b.jar. Os botões de Cadastrar e Cancelar devem estar fora do
JC OMBO B OX Componente que armazena uma lista de objetos, sendo que apenas um

JCOMBOBOX

Componente que armazena uma lista de objetos, sendo que apenas um é visível. Utiliza o método toString() para mostrar a informação visível.

to St ri ng () para mos t rar a informação visível. addItem (Object anObject) –
to St ri ng () para mos t rar a informação visível. addItem (Object anObject) –

addItem(Object anObject) – Adiciona um objeto ao comboBox. getSelectedItem( ) – Retorna o objeto selecionado. setSelectedItem(Object objeto | int indice) – Seta o objeto como selecionado. Possui dois tipos de parâmetros: o índice do objeto no comboBox ou então o próprio objeto a ser selecionado. removelAllItens() – Remove todos os ítens

objeto no comboBox ou então o próprio objeto a ser selecionado . removelAllItens () – Remove
JL IST Semelhante ao ComboBox , só que todos os elementos do List são visíveis

JLIST Semelhante ao ComboBox, só que todos os elementos do List são visíveis e a seleção é feita por linha. É possível também a seleção de várias linhas simultaneamente.

também a seleção de várias linhas simultaneamente. JS PINNER Com p onente q ue muda os
também a seleção de várias linhas simultaneamente. JS PINNER Com p onente q ue muda os
também a seleção de várias linhas simultaneamente. JS PINNER Com p onente q ue muda os

JSPINNER

Componente que muda os valores através de botões do tipo up-down. (Geralmente para inteiros) setValue(Object value) – Seta o valor do Spinner getValue( ) – Retorna o Objeto indicado no Spinner Utilize o evento StateChange para tratar mudanças no Spinner. (Impedir valores negativos, por ex.)

no Spinner Utilize o evento StateChan ge p ara tratar mudan ç as no Spinner. (Impedir
E XERCÍCIO 2 Utilize o arquivo ex2. jar como base. Troque o campo idade por

EXERCÍCIO 2

E XERCÍCIO 2 Utilize o arquivo ex2. jar como base. Troque o campo idade por um

Utilize o arquivo ex2.jar como base. Troque o campo idade por um JSpinner. Limita o Spinner de modo que não seja possível números negativos (evento Change – StateChange). Na aba Dados pessoais do JTabbedPane, crie os campos para endereço (endereço e cidade) e estado como sendo um jComboBox. (coloque uns 5 UF apenas). Crie apenas campo estado do tipo String na classe Pessoa.java. Mude o construtor da classe Pessoa, de modo que inclua o parâmetro estado (UF). No botão Cadastrar, instancie a classe Pessoa com o atributo adicional do estado (UF).

o parâmetro estado (UF). No botão Cadast rar, instancie a cl asse P essoa com o
JT ABLE Com p onente tabela . Dados relativos à tabela são armazenados no objeto
JT ABLE Com p onente tabela . Dados relativos à tabela são armazenados no objeto

JTABLE

Componente tabela. Dados relativos à tabela são armazenados no objeto model (Modelo da tabela) Sempre que for trabalhar com os elementos da tabela, utilize o método getModel( ) para retornar o modelo da tabela.

// Retornando o modelo da tabela para trabalhar com ela javax.swing.table.DefaultTableModel modelo = (javax.swing.table.DefaultTableModel) jTable.getModel();

Agora com o modelo da tabela, é possível inserir registros nela.

jTable. getModel (); Agora com o modelo da tabela, é possível inserir registros nela.
JT ABLE // A p a g a tudo na tela modelo. setRowCount ( 0

JTABLE

// Apaga tudo na tela

modelo.setRowCount(0);

// Adiciona uma linha à tabela modelo.addRow(new Object[ ] { Object1, Object2, // Remove uma linha da tabela modelo.removeRow(indice)

Remove uma linha da tabela mo delo. remove R ow (i ndice) } ); /* Não

} );

/* Não precisam do modelo da tabela */ // Retorna o objeto na linha row e coluna column modelo.getValueAt(row,column); // Retorna o número de linhas selecionadas modelo.getSelectedRowCount( ); // Retorna o índice da linha selecionada, caso seja uma modelo. getSelectedRow( );

getSelectedRowCount ( ); // Retorna o índice da linha selecionada , caso seja u ma modelo.
E XERCÍCIO 3 Agora ao lado do painel com abas que está pronto , coloque

EXERCÍCIO 3

E XERCÍCIO 3 Agora ao lado do painel com abas que está pronto , coloque uma

Agora ao lado do painel com abas que está pronto, coloque uma tabela com dois campos: nome e estado. Ao clicar em cadastrar, é instanciado um objeto pessoa e adicionado na tabela. Depois, apague todos os campos do formulário (crie um método para isso!). Apóie-se no arquivo ex3.jar. Implemente o método toString( ) da classe Pessoa, sendo que ele retornará o nome da pessoa, e todos os gets( ) da classe (Encapsular campos do NetBeans. Coloque um botão Exibir Dados abaixo da tabela. Ao

clicar nele, a linha da tabela é buscada e os dados da pessoa são mostrados. (Pode ser mostrado com o

método System.out.println(

).

(java –jar ex3.jar)

e os dados da pessoa são mostrados. (Pode ser mostrado com o método System.out. println (
JM ENU B AR Menu para Frames principais. Utilize a toolbar Inspector do NetBeans. No

JMENUBAR

JM ENU B AR Menu para Frames principais. Utilize a toolbar Inspector do NetBeans. No MenuBar

Menu para Frames principais. Utilize a toolbar Inspector do NetBeans. No MenuBar, clique com o boo direito do mouse e vá em Add. Add Jmenu adiciona um novo menu Add JMenuItem adiciona um ítem do menu Add Jmenu em um MenuItem adiciona um sub- menu. Add JSeparator adiciona um separador (uma linha) entre os itens do menu. Note que JSeparator é um componente genérico, usados em muitos outros objetos, como na jToolBar (barra de ferramentas)

que JSeparator é um com p onente g enérico , usados em muitos outros objetos, como
que JSeparator é um com p onente g enérico , usados em muitos outros objetos, como
JT OOL B AR Barra de ferramentas. Para adicionar botões ou separadores, escolha o componente

JTOOLBAR

JT OOL B AR Barra de ferramentas. Para adicionar botões ou separadores, escolha o componente que
JT OOL B AR Barra de ferramentas. Para adicionar botões ou separadores, escolha o componente que

Barra de ferramentas. Para adicionar botões ou separadores, escolha o componente que deseja e arraste para a toolbar. Para botões, você pode retirar o texto e colocar uma figura. Para isso, clique no botão, e altere o atributo icon com a imagem desejada. Utiliza o Classpath para não ter problemas com referência. Assim como no MenuBar é possível adicionar separadores na toolbar. Selecione o atributo floatable se desejar uma toolbar que pode ser deslocada de um lugar para o outro.

na toolbar. Selecione o atributo floatable se desejar uma toolbar que pode ser deslocada de um
JP OPUP M ENU Menu Popup para componentes Utilize os mesmos princípios do JMenuBar para

JPOPUPMENU

JP OPUP M ENU Menu Popup para componentes Utilize os mesmos princípios do JMenuBar para cri

Menu Popup para componentes Utilize os mesmos princípios do JMenuBar para criar itens de menu ao JPopupMenu. Para adicionar o menu Popup em algum componente, no atributo componentPopupMenu indique o menu Popup que você deseja utilizar.

o menu Popup em algum componente , no atributo componentPopupMenu indique o menu Popup que você
E XERCÍCIO 4 Igualmente ao arquivo ex4.jar, faça um menuBar e uma toolBar para a

EXERCÍCIO 4

E XERCÍCIO 4 Igualmente ao arquivo ex4.jar, faça um menuBar e uma toolBar para a aplicação.

Igualmente ao arquivo ex4.jar, faça um menuBar e uma toolBar para a aplicação. Não esqueça de fazer referência às figuras através do ClassPath. Para isso, crie outro pacote com o nome de Imagens. Faça um menu Popup para a tabela. Coloque como itens do menu: Deletar Registro, jSeparator e Fechar. Ao clicar em Deletar, remova a linha selecionada na tabela.

como itens do menu: Deletar Registro, jSeparator e Fechar. Ao clicar em Deletar, remova a linha
JD IALOG Tela de diálogo rápido do usuário com o sistema. Não é um tipo

JDIALOG

JD IALOG Tela de diálogo rápido do usuário com o sistema. Não é um tipo de

Tela de diálogo rápido do usuário com o sistema. Não é um tipo de frame que se usa para fazer formulários. A característica mais marcante desta classe é o atributo modal que indica que a tela estará sempre a frente de todas as outras e que você não poderá fazer mais nada enquanto não fechá-la. Exemplos de dialogs são: dialogs para salvar/abrir arquivos, avisos de erro ou informativos, dialogs de impressão, etc.

de dialogs são: dialogs para salvar/abrir arquivos, avisos de erro ou informativos, dialogs de i mpress
JD IALOG JDialogConexao dialogConexao; dialogConexao = new JDialogConexao ( this , true ); java.awt.Dimension d

JDIALOG

JDialogConexao dialogConexao;

JD IALOG JDialogConexao dialogConexao; dialogConexao = new JDialogConexao ( this , true ); java.awt.Dimension d =

dialogConexao = new JDialogConexao(this,true); java.awt.Dimension d = java.awt.Toolkit.getDefaultToolkit().getScreenSize(); // Posiciona a dialog no centro dialogConexao.setLocation(d.width/2 - dialogConexao.getWidth()/2, d.height/2 -

dialogConexao.getHeight()/2);

dialogConexao.setVisible(true);

- dialogConexao. getWidth ()/ 2 , d.height/ 2 - dialogConexao . getHeight ()/ 2 ); dialogConexao
JF ILE C HOOSER Classe permite que se escolham arquivos ou diretórios. JFileChooser jFileChooser =

JFILECHOOSER

JF ILE C HOOSER Classe permite que se escolham arquivos ou diretórios. JFileChooser jFileChooser = new

Classe permite que se escolham arquivos ou diretórios.

JFileChooser jFileChooser = new JFileChooser();

// Seleciona somente arquivos jFileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

if( jFileChooser.showDialog(jDialogBuscaBD, "Abrir") == JFileChooser.CANCEL_OPTION ) return;

String arquivo = jFileChooser.getSelectedFile().getPath();

) == JFileChooser.CANCEL_OPTION ) return ; String arquivo = jFileChooser. getSelectedFile (). getPath ();
JF ILE C HOOSER Pode-se também adicionar filtros ao fileChooser. Veja os exemplos abaixo: //

JFILECHOOSER

JF ILE C HOOSER Pode-se também adicionar filtros ao fileChooser. Veja os exemplos abaixo: // Criando

Pode-se também adicionar filtros ao fileChooser. Veja os exemplos abaixo:

// Criando um novo filtro filtroJPEG = new FileNameExtensionFilter("JPEG Files", "jpg", "JPG", "jpeg","JPEG");

// Existirá um filtro do tipo All Files’ ? fileChooser.setAcceptAllFileFilterUsed(false);

// Adiciona o filtro no fileChooser fileChooser.addChoosableFileFilter(filtroJPEG);

( false ); // Adi c i ona o filt ro no fileChooser fileChooser. addChoosableFileFilter (filtroJPEG);
U M POUCO DA CLASSE F ILE A classe File é uma classe genérica para

UM POUCO DA CLASSE FILE

U M POUCO DA CLASSE F ILE A classe File é uma classe genérica para tratamento

A classe File é uma classe genérica para tratamento de arquivos, do tipo verificar se ele existe, qual o seu caminho, seus atributos, etc. Para salvar ou abrir arquivos utiliza-se outras classes: as Data ou File Input/OutputStreams para arquivos binários e FileReader/Writer para arquivos textos. Não entraremos em detalhes dessas classes, pelo tempo que temos, porém, utilize a descrição destas classes pelo NetBeans. Não é muito complicado!

classes, pelo tempo que temos, porém, utilize a descrição destas classes pelo NetBeans. Não é muito
JD ESKTOP P ANE E JI NTERNAL F RAME Muitos aplicativos utilizam uma interface de
JD ESKTOP P ANE E JI NTERNAL F RAME Muitos aplicativos utilizam uma interface de

JDESKTOPPANE E JINTERNALFRAME

Muitos aplicativos utilizam uma interface de múltiplos documentos (MDI). Basicamente, uma janela principal (janela-pai) contém outras janelas (janelas-filha) para gerenciar vários documentos abertos que estão sendo processados em paralelo.

JIFTeste jInternalFrame = new JIFTeste();

jDesktopPane.add(jInternalFrame);

jInternalFrame.setVisible(true);

JIFTeste jInternalFrame = (JIFTeste)jDesktopPane.getSelectedFrame();

); jInternalFrame. setVisible ( true ); JIFT este jI nterna lF rame = (JIFTeste)jDesktopPane. getSelectedFrame ();
E XERCÍCIO 5 Como o arquivo ex5.jar, coloque o painel de abas em um InternalFrame

EXERCÍCIO 5

E XERCÍCIO 5 Como o arquivo ex5.jar, coloque o painel de abas em um InternalFrame e

Como o arquivo ex5.jar, coloque o painel de abas em um InternalFrame e faça um desktopPane na janela principal. Faça as chamadas de eventos necessárias, de modo que seja possível abrir o formulário pelo menu e pela toolbar. Não se esqueça de transferir todo o código relativo ao formulário para o InternalFrame, juntamente com as formatações dos TextFields no constrututor do frame, métodos relacionados e o buttonGroup do sexo. Todo o código relativo à tabela deverá ser retirado, removendo até mesmo a tabela e o menu Popup relativo a ela. Maximize o Frame Principal ao iniciar.

retirado, removendo até mesmo a tabela e o menu Popup relativo a ela . Maximize o
JO PTION P ANE A classe JOptionPane oferece caixas de diálogo predefinidas que permitem aos
JO PTION P ANE A classe JOptionPane oferece caixas de diálogo predefinidas que permitem aos

JOPTIONPANE

A classe JOptionPane oferece caixas de diálogo predefinidas que permitem aos programas exibir mensagens ao usuário. Abaixo segue alguns métodos desta classe:

// Caixa de diálogo de uma mensagem showMessageDialog(null, "Mensagem", "Título", messageType);

// Caixa de diálogo de confirmação showConfirmDialog(null, "Mensagem", "Título", optionType, messageType);

// Caixa de diálogo de uma entrada showInputDialog(null, "Mensagem", "Título", messageType);

de diálogo de uma entrada sh ow I npu tDial og ( nu ll , "M
Constante (optionType) Descrição YES_NO_OPTION Caixa de diálogo do tipo Sim ou Não

Constante (optionType)

Descrição

YES_NO_OPTION

Caixa de diálogo do tipo Sim ou Não

YES_NO_CANCEL_OPTION

Caixa de diálogo do tipo Sim, Não ou Cancelar

OK_CANCEL_OPTION

Caixa de diálogo do tipo OK ou Cancelar

Caixa de diálogo do tipo OK ou Cancelar Constante Ícone Descrição (messageType)

Constante

Ícone

Descrição

(messageType)

ERROR_MESSAGE

ERROR_MESSAGE Exibe um diálogo que indica um erro para o usuário

Exibe um diálogo que indica um erro para o usuário

INFORMATION MESSAGE

INFORMATION MESSAGE Exibe um diálogo com uma mensagem com inf ormaç õ es para o usu

Exibe um diálogo com uma mensagem com informações para o usuário

_

WARNING_MESSAGE

WARNING_MESSAGE Exibe um diálogo que adverte o usuário sobre um problema em potencial

Exibe um diálogo que adverte o usuário sobre um problema em potencial

QUESTION_MESSAGE

QUESTION_MESSAGE Exibe um diálogo que impõe uma pergunta ao usuário. Geralmente exige uma resposta do tipo

Exibe um diálogo que impõe uma pergunta ao usuário. Geralmente exige uma resposta do tipo Sim ou Não

PLAIN_MESSAGE

Sem ícone

Exibe um diálogo que simplesmente contém uma mensagem, sem nenhum ícone

ou Não PLAIN_MESSAGE Sem ícone Exibe um diálogo que simplesmente contém uma mensagem, sem nenhum ícone
JS LIDER Componente usado para barra de valores. Você pode escolher o valor mínimo e

JSLIDER

JS LIDER Componente usado para barra de valores. Você pode escolher o valor mínimo e máximo
JS LIDER Componente usado para barra de valores. Você pode escolher o valor mínimo e máximo

Componente usado para barra de valores. Você pode escolher o valor mínimo e máximo da barra, que ela devolve a você o valor corrente.

JPROGRESSBAR

evo l ve a voc ê o va l or corrente . JP ROGRESS B AR

Barra de progresso simples. Contém atributos para valores mínimo e máximo da barra de progresso e também um campo string que pode ser adicionado opcionalmente para informar a porcentagem corrente.

de progresso e também um campo string que pode ser adicionado opcionalmente para informar a porcentagem
HTML E M C OMPONENTES S WING A interface gráfica Swing aceita códigos HTML para
HTML E M C OMPONENTES S WING A interface gráfica Swing aceita códigos HTML para

HTML EM COMPONENTES SWING

A interface gráfica Swing aceita códigos HTML para formatação de textos. É simples de usar e muito útil em várias situações. Para usar, apenas coloque o código HTML pelo

método setText(

);

dos componentes.

String strHtml = "<html><center><b> Olá <br> <fonto color=green> Mundo </font></b></center></html>";

JOptionPane.showMessageDialog(null,strHtml,

"Teste",JOptionPane.PLAIN_MESSAGE);;

; JOptionPane. showMessageDialog ( null ,strHtml, " Teste " , JOptionPane . PLAIN _ MESSAGE); ;
A DICIONANDO UM RELÓGIO EM UM FRAME Crie um label no frame q ue desejar
A DICIONANDO UM RELÓGIO EM UM FRAME Crie um label no frame q ue desejar

ADICIONANDO UM RELÓGIO EM UM FRAME

Crie um label no frame que desejar. Faça o seu frame implementar a classe ActionListener. Compile. Veja que o NetBeans pedirá os pacotes necessários e também implementar os métodos abstratos. Nesse momento, ele criará um método:

actionPerformed(ActionEvent e) Crie um método dispararRelogio() e chame esse método no construtor do frame e implemente a função actionPerformed( ) Para isso, lembre de criar um atributo no frame, do tipo javax.swing.Timer. Olhe o arquivo relogio.jar para vê-lo funcionando. Adicione seu relógio ao projeto

Olh e o arquivo re l og i o . jar para v ê -l o

public void dispararRelogio() {

timer = new javax.swing.Timer(1000, this);

timer.setInitialDelay(0);

timer.start();

}

public void actionPerformed(ActionEvent e) {

GregorianCalendar calendario = new GregorianCalendar(); int h = calendario.get(GregorianCalendar.HOUR_OF_DAY); int m = calendario.get(GregorianCalendar.MINUTE); int s = calendario.get(GregorianCalendar.SECOND);

String hora =

( (h < 10) ? "0" : "" ) + h + ":" + ( (m < 10) ? "0" : "" )+m+ ":" + ( (s < 10) ? "0" : "" ) + s ;

jLabelHora.setText(hora);

}

)+m+ ":" + ( (s < 10 ) ? "0" : "" ) + s ;
)+m+ ":" + ( (s < 10 ) ? "0" : "" ) + s ;
T RATAMENTO DE E XCEÇÕES COM TRY - CATCH - FINALY T ra t an
T RATAMENTO DE E XCEÇÕES COM TRY - CATCH - FINALY T ra t an
T RATAMENTO DE E XCEÇÕES COM TRY - CATCH - FINALY T ra t an

TRATAMENTO DE EXCEÇÕES COM TRY-CATCH-FINALY

Tratando erros lógicos excepcionais, de falhas ao acesso de um BD até erros de divisão por zero.

FINALY T ra t an d o erros lógi cos excepc i ona i s, d

CONHECENDO A ESTRUTURA DE UM TRY- CATCH-FINALLY

try

{

// Código que tentará ser executado

}

catch( Exception e )

{

// Se uma exceção for atingida, este código é // executado

}

finally

{

// Finalmente, com ou sem exceção, este código é // executado

}

é // executado } finally { // Finalmente, com ou sem exceção, este código é //
é // executado } finally { // Finalmente, com ou sem exceção, este código é //
V ISÃO GERAL DAS E XCEÇÕES
V ISÃO GERAL DAS E XCEÇÕES

VISÃO GERAL DAS EXCEÇÕES

V ISÃO GERAL DAS E XCEÇÕES
V ISÃO GERAL DAS E XCEÇÕES
C LASSE DE EXCEÇÕES Existem basicamente duas classes de exceções: exceções verificadas e exceções não

CLASSE DE EXCEÇÕES

C LASSE DE EXCEÇÕES Existem basicamente duas classes de exceções: exceções verificadas e exceções não

Existem basicamente duas classes de exceções:

exceções verificadas e exceções não verificadas. Exceções não-verificadas não precisam ser listadas na clausula throws. Em geral são as exceções de execução (RuntimeException), como ponteiro nulo, erro de ‘casting’, erro de aritmética, de limite de arrays, etc. Podem ser evitadas facilmente através de uma boa programação. Exceções verificadas devem ser listadas na cláusula throws, porque ela depende de vários fatores que não são influenciados pela programação, mas sim pelo estado de execução do programa, como em BD, abertura de imagens, etc.

pela programação , mas sim pelo estado de execução do programa, como em BD, abertura de
T HROW Um método pode ser declarado como throws . A grosso modo, significa que

THROW

T HROW Um método pode ser declarado como throws . A grosso modo, significa que o

Um método pode ser declarado como throws. A grosso modo, significa que o método não vai tratar a exceção que segue throws. Ela será ‘jogada’ para o método que chamou este método em questão. O sentido disso é muito simples: quando ocorre um erro em uma inserção no bando de dados, não será naquela camada que eu avisarei o usuário deste erro. Então a exceção será lançada método a método até chegar à camada de Interface, que tratará a exceção e avisará o usuário com mensagens de erro apropriadas.

chegar à camada de Interface, que tratará a exceção e avisará o usuário com mensagens de

EXEMPLO DE THROWS

public void metodoA()

{

try

{

objeto.metodoB();

}

catch( Exception1 ex ) { /* Código para a exceção */ }

}

public void metodoB() throws Exception1, Exception2

{

// Codigo

}

exceção */ } } pu bli c void meto doB () th rows E xcept i
exceção */ } } pu bli c void meto doB () th rows E xcept i
M ÉTODOS DOS OBJETOS DE EXCEÇÃO Existem alguns métodos que os objetos de exceção oferecem
M ÉTODOS DOS OBJETOS DE EXCEÇÃO Existem alguns métodos que os objetos de exceção oferecem

MÉTODOS DOS OBJETOS DE EXCEÇÃO

Existem alguns métodos que os objetos de exceção oferecem para analisarmos os erros.

// Imprime a pilha de chamada de métodos excecao.printStakeTrace()

// Retorna uma string descrevendo o erro ocorrido excecao.getMessage()

de métodos excecao. pr intStakeTrace () // Retorna uma string descrevendo o erro ocorrido excecao. getMessage
C ONEXÃO COM BANCO DE DADOS VIA JDBC
C ONEXÃO COM BANCO DE DADOS VIA JDBC
C ONEXÃO COM BANCO DE DADOS VIA JDBC

CONEXÃO COM BANCO DE DADOS

VIA JDBC

C ONEXÃO COM BANCO DE DADOS VIA JDBC
C ONEXÃO C OM O BANCO DE DADOS - JDBC A conexão com o banco
C ONEXÃO C OM O BANCO DE DADOS - JDBC A conexão com o banco

CONEXÃO COM O BANCO DE DADOS - JDBC

A conexão com o banco de dados vai JDBC utiliza um arquivo .jar que constitui o elo de ligação da aplicação com o SGBD utilizado. Ele deve ser incluído nas Opções do Projeto. Na janela Runtime, é possível fazer uma conexão local com o banco de dados para fazer algumas consultas ou atualizações. Utilize a classe de apoio Conexao.java, já pronta. Três métodos principais que você deve conhecer desta classe: conecta(), desconecta() e getConection() .

Três métodos p rinci p ais q ue você deve conhecer desta classe: conecta (), desconecta
P A SSOS PAR A FAZER UMA A PLICA Ç ÃO COM B ANCO DE

PASSOS PARA FAZER UMA APLICAÇÃO COM BANCO DE DADOS

P A SSOS PAR A FAZER UMA A PLICA Ç ÃO COM B ANCO DE DADOS

1. Inicialmente e ironicamente não se preocupe com o banco de dados da aplicação. Faça os formulários e tudo o que necessita para a aplicação.

2. Utilizando um SGBD, faça um banco de dados para a aplicação.

3. Inclua no projeto a classe Conexao.java e faça uma outra abstrata, que vai ser sua camada de persistência.

4. Nesta classe de persistência, implemente os métodos insert, updade, etc, como estáticos.

5. Em Projeto/Propriedades Libraries, inclua o conector JBDC (add JAR/Folder)

insert, updade, etc, como estáticos. 5. Em Projeto/Propriedades – Libraries, inclua o conector JBDC (add JAR/Folder)
P A SSOS PAR A FAZER UMA A PLICA Ç ÃO COM B ANCO DE

PASSOS PARA FAZER UMA APLICAÇÃO COM BANCO DE DADOS

P A SSOS PAR A FAZER UMA A PLICA Ç ÃO COM B ANCO DE DADOS

1. Já foi feito!
2. Vamos fazer um BD para o último exercício. Vamos criar uma tabela PESSOA com os campos rg (chave primária), nome, idade, cidade e estado, sendo do tipo varchar(tamanho de restrição)
3. ---

4. Agoora vamoos ver coomoo oos coomandoos sql devem ser inseridos no código. Lembrando que devemos passar a classe que desejamos salvar e a conexão atual usada.

devem ser inseridos no código. Lembrando que devemos p assar a classe que desej amos salvar
I MPLEMENTANDO O MÉTODO SAVAR R EGISTRO Método savarRegistro(Pessoa p, Conexao conexao) conexao. conecta ();
I MPLEMENTANDO O MÉTODO SAVAR R EGISTRO Método savarRegistro(Pessoa p, Conexao conexao) conexao. conecta ();

IMPLEMENTANDO O MÉTODO SAVARREGISTRO

Método savarRegistro(Pessoa p, Conexao conexao)

conexao.conecta(); Connection con = conexao.getConection(); String query = "INSERT INTO pessoa(rg, nome, idade, cidade, estado) VALUES (?,?,?,?,?)"; PreparedStatement pSt = con.prepareStatement(query); pSt.setString(1, p.getRg() ); pSt.setString(2, p.getNome() ); pSt.setInt(3, p.getIdade() ); pSt.setString(4, p.getCidade() ); pSt.setString(5, p.getUF() );

pSt.executeUpdate();

pSt.close();

conexao.desconecta();

(4, p. getCidade () ); pSt . setString (5 , p. getUF () ); pSt. executeUpdate
I MPLEMENTANDO O MÉTODO ATUALIZA R EGISTRO É semelhante ao método anterior, diferenciando apenas no
I MPLEMENTANDO O MÉTODO ATUALIZA R EGISTRO É semelhante ao método anterior, diferenciando apenas no

IMPLEMENTANDO O MÉTODO ATUALIZAREGISTRO

É semelhante ao método anterior, diferenciando apenas no comando SQL a ser usado.

IMPLEMENTANDO O MÉTODO CARREGAREGISTRO

A maneira de como proceder permanece quase a mesma. Porém, o comando que executa a sql é

outro: executeQuery(

resultados da consulta de um select em uma

estrutura denominada ResultSet.

).

Este comando retorna os

( resultados d a consu lt a d e um select em uma estrutura denominada ResultSet.
I MPLEMENTANDO O MÉTODO CARREGA R EGISTRO conexao. conecta () ; Connection con = conexao.
I MPLEMENTANDO O MÉTODO CARREGA R EGISTRO conexao. conecta () ; Connection con = conexao.

IMPLEMENTANDO O MÉTODO CARREGAREGISTRO

conexao.conecta();

Connection con = conexao.getConection();

Statement st = con.createStatement();

ResultSet rs;

String query = "SELECT nome, idade, estado FROM pessoa WHERE rg = " + rg;

rs = st.executeQuery(query);

Pessoa p = null;

if( !rs.next() ) return p;

p = new Pessoa( rg,rs.getString("nome"), rs.getShort("idade"), rs.getString("estado") );

st.close();

conexao.desconecta();

), rs . getShort ( " idade " ), rs. getString ( "estado" ) ); st.
I MPLEMENTANDO O MÉTODO CARREGA R EGISTRO O método anterior carrega apenas um registro. Porém,
I MPLEMENTANDO O MÉTODO CARREGA R EGISTRO O método anterior carrega apenas um registro. Porém,

IMPLEMENTANDO O MÉTODO CARREGAREGISTRO

O método anterior carrega apenas um registro. Porém, é necessário em formulários que retornemos vários registros de uma só vez. Para isso, ao invés de retornarmos uma Pessoa, podemos retornar uma lista de pessoas. A classe ResultSet tem um método rs.next() que será um interador e retornará falso quando acabarem os registros.

do { Pessoa p = new Pessoa(

mPessoa.add(p); // mPessoa é um LinkedList } while( rs.next() );

);

registros. do { Pessoa p = new Pessoa ( mPessoa. add (p); / / mPessoa é
E XERCÍCIO Vamos aplicar os passos visto anteriormente e implementar a classe ControladorDePersistencia para

EXERCÍCIO

E XERCÍCIO Vamos aplicar os passos visto anteriormente e implementar a classe ControladorDePersistencia para

Vamos aplicar os passos visto anteriormente e implementar a classe ControladorDePersistencia para tratar apenas inserções e carregamento no Banco de Dados. Antes de começar, vamos adaptar o nosso exercício já com GUI. Abra o projeto do último exercício. Primeiro vamos modificar a classe Pessoa. Crie um construtor simplificado para a classe com os seguintes parâmetros: nome, idade e estado. Agora pense em como será seu banco de dados. Faça duas tabelas: uma ‘estado’ contendo apenas o nome do UF como chave primária;

seu banco de dados. F aça d uas tabel as: uma ‘estado’ con tend o apenas
E XERCÍCIO E a outra ‘ pessoa ’ , contendo o nome (ke y )

EXERCÍCIO

E XERCÍCIO E a outra ‘ pessoa ’ , contendo o nome (ke y ) ,

E a outra pessoa, contendo o nome (key), idade e estado (chave estrangeira) Adicione na tabela estado no BD os UF que estão no seu comboBox (GUI do exercício anterior). Adicione a classe Conexao.java ao projeto, declare uma variavel deste tipo e instancie ela no construtor do frame principal. Agora vamos implementar a classe de persistência. Faça os dois métodos (salvar e carregar) como vistos anteriormente, passando os parâmetros de acordo com a estrutura do banco de dados. Para o método carregar, vamos passar o nome da pessoa como parâmetro

com a estrutura do banco de dados. P ara o m ét o d o carregar
E XERCÍCIO Agora passe para o construtor do InternalFrame o objeto de conexão a ser

EXERCÍCIO

E XERCÍCIO Agora passe para o construtor do InternalFrame o objeto de conexão a ser usado,

Agora passe para o construtor do InternalFrame o objeto de conexão a ser usado, para que ele possa ter uma visualização do objeto. Após feito isso, no botão cadastrar do formulário MDI, vamos inserir uma pessoa no BD e verificar se ela realmente foi inserida utilizando um SGBD.

Por último, vamos fazer uma busca simples. Utilize

o método JOptionPane.showInputDialog(

) para

receber o nome da pessoa e ao carregar, imprima

os dados na tela pelo System.out.println(

);

( ) para receber o nome da pessoa e ao carregar, imprima os dados na tela
U TILIZANDO O DEBUG DO N ET B EANS U san d o o Deb
U TILIZANDO O DEBUG DO N ET B EANS U san d o o Deb
U TILIZANDO O DEBUG DO N ET B EANS U san d o o Deb

UTILIZANDO O DEBUG DO NETBEANS

Usando o Debug do NetBeans para depurar código e encontrar erros lógicos.

O DEBUG DO N ET B EANS U san d o o Deb ug d o
C ONCEITOS ENVOLVIDOS BreakPoint : Primeiro passo para ‘debugar’. Adiciona linhas de parada no código,

CONCEITOS ENVOLVIDOS

C ONCEITOS ENVOLVIDOS BreakPoint : Primeiro passo para ‘debugar’. Adiciona linhas de parada no código, para

BreakPoint: Primeiro passo para ‘debugar’. Adiciona linhas de parada no código, para que você possar ver o estado do programa Local Variables: Com essa janela pode-se ver o valor das variaveis no instante da parada acionada pelo breakpoint Watchs: Você pode selecionar quais variáveis deseja olhar, ao invés de todas. Para isso, selecione a variável que desejar e com o Popup, escolha New Watch (Observador) CallStack: Pilha de chamada de métodos.

a variável que desejar e com o Popup, escolha New Watch (Observador) CallStack : Pilha de
E XERCÍCIO 6 A bra o projeto Debug. Você pode ver que não há nenhum

EXERCÍCIO 6

E XERCÍCIO 6 A bra o projeto Debug. Você pode ver que não há nenhum erro

Abra o projeto Debug. Você pode ver que não há nenhum erro de compilação. Rodando, você verá uma mensagem de erro indicando que uma tentativa de acesso à um ponteiro nulo. Com a ajuda do debug do NetBeans, descubra o que está errado e corrija.

tentativa de acesso à um ponteiro nulo. Com a ajuda do debu g do NetBeans ,
D ESENHANDO PRIMITIVAS GEOMÉTRICAS SOBRESCREVENDO O MÉTODO PAINT C OMPONENT () A ux ili an
D ESENHANDO PRIMITIVAS GEOMÉTRICAS SOBRESCREVENDO O MÉTODO PAINT C OMPONENT () A ux ili an
D ESENHANDO PRIMITIVAS GEOMÉTRICAS SOBRESCREVENDO O MÉTODO PAINT C OMPONENT () A ux ili an
D ESENHANDO PRIMITIVAS GEOMÉTRICAS SOBRESCREVENDO O MÉTODO PAINT C OMPONENT () A ux ili an

DESENHANDO PRIMITIVAS GEOMÉTRICAS SOBRESCREVENDO O MÉTODO PAINTCOMPONENT()

Auxiliando no desenvolvimento de aplicações que precisam desenhar primitivas geométricas, como elipses, retângulos, retas e polígonos.

t o d e ap li caç õ es que precisam desenhar primitivas geométricas, como elipses,
OBJETIVOSOBJETIVOS Compreender a classe Graphics . Entender o Sistemas de Coordenadas do Java Desenhar primitivas

OBJETIVOSOBJETIVOS

OBJETIVOSOBJETIVOS Compreender a classe Graphics . Entender o Sistemas de Coordenadas do Java Desenhar primitivas

Compreender a classe Graphics.

Entender o Sistemas de Coordenadas do Java Desenhar primitivas geométricas sobrescrevendo o método

).

Utilizar recursos do mouse para desenhar

figuras Compreender a API Java2D

paintComponet(

Utilizar recursos avançados para desenhar figuras

desenhar figuras Compreender a API Java2D p aintCom p onet ( Utilizar recursos avan ç ados
APIAPI JAVAJAVA Java fornece uma API para desenhar formas g eométricas no es paç o

APIAPI JAVAJAVA

APIAPI JAVAJAVA Java fornece uma API para desenhar formas g eométricas no es paç o euclidiano

Java fornece uma API para desenhar formas geométricas no espaço euclidiano 2-D.

Classes Importantes na manipulação de objetos gráficos:

Classe Color Classe Font Classe FontMetrics Classe Graphics2D

Cl

asse

P

l

o ygon

Classe BasicStroke Classe GradientPaint Classe TexturePaint

Outras classes

Classe Graphics2D Cl asse P l o ygon Classe BasicStroke Classe GradientPaint Classe TexturePaint Outras classes
API

API

API
API
API
CLASSE GRAPHICS Um objeto Graphics desenha pixels na tela que pode rep resentar um texto

CLASSE GRAPHICS

CLASSE GRAPHICS Um objeto Graphics desenha pixels na tela que pode rep resentar um texto ou

Um objeto Graphics desenha pixels na tela que pode representar um texto ou um objeto gráfico (linhas, elipses, retangulos, etc).

Além do mais, fornece métodos para manipular Cor, Font e outros atributos.

Toda aplicação Java de desenho sobre a tela, usa um objeto Graphics para gerenciar aplicações gráficas.

Toda aplicação Java de desenho sobre a tel a, usa um o bjeto G rap hi
CLASSE GRAPHICS A Classe Graphics é uma classe abstrata, ou seja, objetos Graphics não podem
CLASSE GRAPHICS A Classe Graphics é uma classe abstrata, ou seja, objetos Graphics não podem

CLASSE GRAPHICS

A Classe Graphics é uma classe abstrata, ou seja, objetos Graphics não podem ser instanciados.

Contribui para Portabilidade.

Desenhos na tela são diferentes para as plataformas que suportam Java.

Quando Java é implementado para cada plataforma, uma subclasse de Graphics é criada que implementa a capacidade de desenhar.

implementado para cada p lataforma , uma subclasse de Gra p hics é criada que implementa
DESENHANDO Todo componente Java, por exemplo, JPanel , JButton , JFrame , possui seu próprio

DESENHANDO

DESENHANDO Todo componente Java, por exemplo, JPanel , JButton , JFrame , possui seu próprio objeto

Todo componente Java, por exemplo, JPanel, JButton, JFrame, possui seu próprio objeto Graphics que é responsável por desenhar somente neste componente.

Para obter este objeto Graphics do componente, basta invocar o método getGraphics()

Obtido o objeto Graphics, basta invocar os métodos deste objeto para desenhar sobre o componente

getGraphics() Obtido o objeto Graphics , basta invocar os métodos deste objeto para desenhar sobre o
S ISTEMAS DE COORDENADAS JAVA Para começar desenhar em Java, devemos entender o sistema de
S ISTEMAS DE COORDENADAS JAVA Para começar desenhar em Java, devemos entender o sistema de

SISTEMAS DE COORDENADAS JAVA

Para começar desenhar em Java, devemos entender o sistema de coordenadas Java que é um esquema de identificar cada ponto possível na tela

devemos entender o sistema de coordenadas Java que é um esquema de id ent ifi car
devemos entender o sistema de coordenadas Java que é um esquema de id ent ifi car
EXERCÍCIO 1 Crie um novo projeto com o nome “Desenho” Adicione ao projeto a classe

EXERCÍCIO 1

Crie um novo projeto com o nome “Desenho” Adicione ao projeto a classe JFrame Adicione o componente JButton e o JPanel ao JFrame,

Lembre-se de alterar o nome das variáveis JButton e JPanel seguindo as regras de Engenharia de Software!!!

No método ActionPerformed() do JButton, faça o seguinte:

public void jButton1ActionPerformed(java.awt.event.ActionEvent evt)

{

Graphics g = jPanel1.getGraphics(); g.drawLine(0,0,jPanel1.getWidth(), jPanel1.getHeight());

}

t) { Graphics g = jPanel1. getGraphics (); g. drawLine (0,0,jPanel1. getWidth (), jPanel1. getHeight ());
DESENHANDO CORRETAMENTE Todo componente Java possui o método paintComponent. Este método é utlizado para fazer
DESENHANDO CORRETAMENTE Todo componente Java possui o método paintComponent. Este método é utlizado para fazer

DESENHANDO CORRETAMENTE

Todo componente Java possui o método paintComponent. Este método é utlizado para fazer os desenhos gráficos.

O método paintComponent possui como argumento o objeto Graphics. Este objeto é passado ao paintComponent pelo sistema quando este componente precisa ser repintado.

Cabeçalho do Método:

public void paintComponent( Graphics g )

O objeto Graphics g recebe uma referência a um objeto da classe derivada de Graphics do sistema.

Graphics g ) O objeto Graphics g recebe uma referência a um objeto da cl asse
DESENHANDO CORRETAMENTE O método paintComponent nada faz por default : O p ro g ramador
DESENHANDO CORRETAMENTE O método paintComponent nada faz por default : O p ro g ramador

DESENHANDO CORRETAMENTE

O método paintComponent nada faz por default:

O programador deve sobrescrever este método! Raramente o método paintComponent é chamado diretamente pelo programador. Este método é automaticamente chamado quando executa-se o programa. Para chamar novamente o método, um evento deve ocorrer, por exemplo, maximizar e minimizar a tela, redimensionar a tela, e outros

Quando há necessidade de chamar explicitamente o método paintComponent, faz-se uma chamada ao método repaint.

Quando há necessidade de chamar explicitamente o método p aintCom p onent , faz-se uma chamada
EXERCÍCIO 2 Utilizando o mesmo projeto do exercício anterior: Crie quatro atributos do tipo inteiro

EXERCÍCIO 2

EXERCÍCIO 2 Utilizando o mesmo projeto do exercício anterior: Crie quatro atributos do tipo inteiro (int

Utilizando o mesmo projeto do exercício anterior:

Crie quatro atributos do tipo inteiro (int ) para a classe Form, x1, y1, x2, y2.

Sobrescreva o método paintComponent:

new = JPanel(){ void paintComponent( Graphics g ){ super.paintComponent(g); g.drawLine(x1,y1,x2, y2);

};

}

Crie JLabels e JTextFields para atribuir os valores aos atributos, x1, y1, x2, y2.

(x1,y1,x2, y2); }; } Crie JLabels e JTextFields para atribuir os valores aos atributos , x1
CONTINUAÇÃO DO EXERCÍCIO 2 No JButton do exercício anterior, altere o evento A ctionPerformed ,
CONTINUAÇÃO DO EXERCÍCIO 2 No JButton do exercício anterior, altere o evento A ctionPerformed ,

CONTINUAÇÃO DO EXERCÍCIO 2

No JButton do exercício anterior, altere o evento ActionPerformed, faça as variáveis x1, y1, x2, y2 receber os valores dos TextFilds respectivos.

Ainda no mesmo evento, invoque o método repaint do componente Jpaint.

Execute seu Programa!!!

Dúvidas???

Ai nd a no mesmo even t o, i nvoque o m étodo repaint do componente
APROFUNDANDO O CONHECIMENTO Classe Color : fornece métodos e constantes para manipular cores em um
APROFUNDANDO O CONHECIMENTO Classe Color : fornece métodos e constantes para manipular cores em um

APROFUNDANDO O CONHECIMENTO

Classe Color: fornece métodos e constantes para manipular cores em um programa em Java. A cor é criada a partir do componente RGB.

Existem constantes pré-definidas que retornam uma cor Ex: Color c = Color.red;

public void setColor( Color c )

Depois de invocar este método, todos os objetos a serem desenhados terão a cor atribuída. Ex: g.setColor( new Color(0,0,255) ) ou

Ex: g.setColor( Color.blue );

terão a cor atribuída . Ex: g. setColor ( new Color (0,0,255) ) ou E x:
C OMPONENTE GUI JC OLOR C HOOSER A componente GUI JColorChooser permite ao usuário escolher

COMPONENTE GUI JCOLORCHOOSER

A componente GUI JColorChooser permite ao usuário escolher a cor desejada por meio de uma Dialog:

Abaixo segue um exemplo de como utilizar o recurso JColorChooser:

public void jButtonCorActionPerformed(java.awt.event.ActionEvent evt)

{

Color cor = jPanelDesenho.getBackground(); cor = JColorChooser.showDialog( this, “Escolha uma cor", color ); jPanelDesenho.setBackground(cor);

}

cor = JColorChooser. showDialog ( this , “Escolha uma cor", color ); jPanelDesenho. setBackground (cor); }
D ESENHANDO LINHAS , RETÂNGULOS E ELIPES Mét od os G rap hi cs para
D ESENHANDO LINHAS , RETÂNGULOS E ELIPES Mét od os G rap hi cs para

DESENHANDO LINHAS, RETÂNGULOS E ELIPES

Métodos Graphics para desenho:

public void drawLine( int x1, int y1, int x2, int y2 )