Sie sind auf Seite 1von 208

A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Apostila de Java 2 Com Banco de Dados


1 – Introdução
1.1 – Java: O que é Java?
1.2 – Java: Como surgiu?
1.3 – Java: Funcionamento

2 – O que é preciso para programar em Java?


2.1 – Baixando o WinZip
2.2 – Baixando o JDK/SDK
2.3 – Baixando a documentação do JDK/SDK
2.4 – Baixando o JCreator
2.5 – Configurando o JCreator
2.6 – Testando o funcionamento do JDK/SDK e do JCreator

3 – Conceitos fundamentais de Programação em Java


3.1 – Como programa em Java
3.2 – Anatomia de uma Classe
3.3 – Comentários
3.4 – O uso do ponto-e-vírgula
3.5 – Tipos de dados
3.6 – Conversão de tipo
3.7 – Operadores
3.8 – Variáveis
3.9 – Funções matemáticas

4 – Introdução a interface gráficas em Java


4.1 – Entendo o Swing
4.11 – Uso do JFrame na construção de janelas no aplicativo
4.12 - Janela normal
4.2 - Janela Maximizada
4.3 - Janela minimizada
4.4 – Janela que não pode ser redimensionada
4.5 – Janela Centralizada
4.6 – Trocando a cor do fundo da janela
4.7 – Usando cores personalizadas para suas janelas
4.8 – Definindo um ícone para a janela do aplicativo

5 – Adicionando componentes JLabel ou rótulos na sua janela


5.1 - Criar os objetos JLabel
5.2 - Atribuir o conteúdo ao JLabel
5.3 - Definir Coluna, Linha, largura e altura do JLabel
5.4 - Alterando a cor do JLabel
5.5 - Cores personalizada para o JLabel
5.6 - Alterando tipo da fonte, estilo e tamanho
5.7 – Adicionando imagem ao componente JLabel

6 – Adicionando componentes JTextField ou caixa de texto


6.1 – Foco para uma caixa de texto
6.2 – Cor da fonte para a caixa de texto
6.3 – Trocando a fonte, estilo e tamanho da letra do JTextField

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

6.4 – Alinhamento do texto de uma caixa de texto


6.5 – Alteração da cor de fundo da caixa de texto

7 – Adicionando componentes JButton ou botões a sua janela


7.1 – Botão somente com texto
7.2 – Botão com texto e imagem
7.3 – Botão somente com imagem
7.4 – Adicionando vários botões na janela
7.5 – Definir a cor de fundo para um componente JButton
7.6 – Definir teclas de atalho para objetos JButton
7.7 – Qual botão reagirá ao pressionamento da tecla enter

8 - Adicionando componentes JPasswordField


8.1 – Alterando a cor de fonte de um JPasswordField
8.2 – Definir uma cor personalizada para o componente JPasswordField
8.3 – Alterando a cor de fundo de um componente JPasswordField
8.4 – Cor de fundo personalizada para o componente JPasswordField
8.5 – Alterar tipo de fonte, estilo e tamanho da letra do componente
8.6 – Alterando o caracter que aparece no componente JPasswordField

9 – Controle JFormattedTextField para data, telefone, CEP, CPF


9.1 – Adicionando cores na letra do JFormattedTextField
9.2 – Adicionando cores no fundo do JFormattedTextField
9.3 – Alterando o tipo, estilo, tamanho da fonte do JFormattedTextField

10 – Fazendo um JButton executar uma ação


10.1 – Clicando no botão para fechar uma janela
10.2 – Clicando no mostrar para descobrir a senha digitada
10.3 – Clicando no botão somar e será mostrada a soma dos números
10.4 – Clicando no botão limpar e as caixas de texto serão limpas
10.5 – Ocultar e Exibir componentes
10.6 – Desabilitar e Habilitar Exibir componentes

11 – Apresentando a classe JList


11.1 – Selecionando múltiplos itens em uma caixa de listagem
11.2 – Trocando a cor da letra do JList
11.3 – Trocando a cor de fundo do JList
11.4 – Trocando tipo, estilo e tamanho da fonte do JList

12 – uso da classe JComboBox na criação de caixas de combinação


12.1 – Como criar uma caixa de combinação editável

13. Entendimento e uso da classe JCheckBox


13.1 – Iniciar um formulário com uma caixa de seleção marcada.
13.2 – Alterando a cor da letra de um JCheckBox

14 – Uso da Classe JRadioButton para criar botões de opção

15 – Fazendo um aplicativo com ComboBox CheckBox RadioButton

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

16 – Como adicionar dica aos seus botões


16.1 – Adicionar cores diferentes as dicas

17 – Tipos de diálogos fornecidos pela classe JOptionPane


17.1 – Como entender os diálogos de confirmação
17.2 – Traduzir os botões de diálogos
17.3 – Como obter dados por meio de diálogos do tipo prompt
17.4 – Como fornecer os valores a serem selecionados em um diálogo
17.5 – Entendimento e uso do método showMessageDialog.

18 – Maiúsculas e Minúsculas

19 – Adicionando Data nos seus aplicativos

20 – Adicionando Horas ao seu aplicativo

21 – Entendimento da classe JTextArea

21 – Entendimento da classe JTextArea


21.1 – Definição das barras de rolagem para os controles JTextArea
21.2 – Controlando a quebra automática de linhas
21.3 – Cor da fonte, Cor de fundo
21.4 – Tipo, estilo e tamanho de fonte

22 – Adicionando menus a um aplicativo Java


22.1 – Como adicionar submenus a um item do menu
22.2 – Como usar caixa de seleção como itens do menu JCheckBoxMenuItem
22.3 – Usando botões de seleção como item do menu JRadioButtonMenuItem
22.4 – Menu executando ações

23 – Criando um menu de contexto – Classe JPopupMenu

24 – Uso da classe JToolBar para criar barra de ferramentas

25 – Como criar janelas secundárias com o uso da classe JDialog


25.1 – Como criar janelas secundárias modais
25.2 – Como criar janelas secundárias não-modais
25.3 – Como criar janelas secundárias com JFrame

26 – Uso da Classe JWindow para criar uma Splash Screen

27 – Banco de Dados Relacionais


27.1 – O que é um Banco de Dados?
27.2 – Banco de Dados Relacionais
27.3 – BD x SGBD
27. 4 – Índice
27.5 – Criando Banco de Dados
27.6 – Criando Tabelas no MS ACCESS

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

28 – O que SQL?
28.1 – Como usar SQL?
28.2 – Tipos de Dados

29 – ODBC/JDBC
29.1 – O que é um Driver?
29.2 – O que é ODBC?
29.3 – O que é JDBC?
29.4 – JDBC / ODBC
29.5 – DriverManager
29.6 – Como Criar Fontes de Dados ODBC

30 – SQL – Java & Banco de Dados - Considerações Iniciais


30.1 – Anatomia de uma Conexão e Testando a Conexão
30.2 - Criando a Tabela – CREATE TABLE
30.3 – Alterando Tabelas (Incluir ou Excluir Campos) ALTER TABLE
30.4 – Excluir Tabelas – DROP TABLE
30.5 – Inserindo Dados na Tabela (INSERT)
30.6 – Consultas (SELECT)
30.7 – Consultas Avançadas
30.8 – Atualizando Dados (UPDATE)
30.9 – Excluindo Dados (DELETE)
30.10 – Exibindo Dados em uma Lista
30.11 – Exibindo relatório com filtro e chamando outra janela

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

1 – Introdução

1.1 – Java: O que é?

O que faz ser tão especial a ponto de atrair a atenção da imprensa e


programadores de todo mundo?

É o fato de ter sido projetada levando em conta o que havia de melhor e pior
nos cinqüenta anos de existências das linguagens de programação. Java parte
do que deu ou não certo nas linguagens que a precederam ou lhe foram
contemporâneas. E suas características fazem-na uma linguagem muito útil
nestes tempos de interconectividade e migração tecnológica constantes.

Java é totalmente orientada a objetos é sua parente mais próxima é a


linguagem C, C++. Programadores em C sentir-se-ão muito à vontade ao
programarem em Java.

1.2 – Java: Como surgiu?

Java é ao mesmo tempo uma linguagem e um ambiente de programação.


Criada pela Sun Microsystems, foi inicialmente destinada a pequenos
dispositivos eletrônicos e quase fracassou. Comercialmente só se tornou um
quando se voltou para a internet. Isto porque, graças a sua característica
multiplataforma, possibilitou a inclusão de pequenas aplicações diretamente
nas páginas web, independente do sistema usado no computador do cliente.

A origem do nome Java por si só é material para um livro inteiro. Existem muita
especulação e lenda associada aos motivos que levaram os criadores da
linguagem Java – inicialmente chamada OAK, a batizaram-na como este nome
e a associaram ao café.

O mais importante é você saber que inicialmente a linguagem Java não incluía
a internet em suas pretensões. Hoje tem se mostrado a linguagem ideal para
desenvolvimento para internet e computação distribuída. Também está voltada
às origens, ao ser cogitada pelas grandes indústrias como linguagem de
programação para eletroeletrônicos e eletrodomésticos.

O principal responsável pelo desenvolvimento da linguagem Java foi o


engenheiro James Gosling que, a serviço Sun, comandou e orientou o grupo
de trabalho responsável pelo desenvolvimento do ambiente de programação
Java. O início do desenvolvimento da linguagem Java data de 1992, mas só
em 1995, Java foi apresentada ao mundo como linguagem e ambiente de
desenvolvimento multiplataforma.

Atualmente o ambiente Java se apresenta de diversas formas, cabendo ao


programador escolher a que mais o atrai.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

1.3 – Java: Funcionamento

Java é uma linguagem de programação totalmente orientada a objetos. Seu


funcionamento, no que diz respeito ao desenvolvimento, é semelhante a outras
linguagens: DIGITAR, COMPILAR, EXECUTAR, DEPURAR. Mas como já
vimos, é uma das poucas, senão a única linguagem de programação que
permite ao programador criar um único código que roda sem alteração em
qualquer computador que possua uma Java Virtual Machine instalada. É
justamente a JVM ou Máquina Virtual Java o segredo por trás da
característica de multiplataforma, apresentada pelo ambiente de
desenvolvimento Java.

O diagrama seguinte ilustra o assunto. A independência de plataforma é a


capacidade de o mesmo programa ser executado em diferentes plataformas e
sistemas operacionais. Esta é uma das vantagens mais significativas da
linguagem Java.

Interpretador
Java
Código Fonte Compilador Binário Java (runtime Java ou
Arquivo.java Java Arquivo.class JVM – Java
Virtual
Machine/Máquina
Virtual Java)
O compilador Java gera JVM para WIN32
um arquivo binário com o
O código fonte é mesmo nome do arquivo
um arquivo gravado com a extensão.
digitado em Compilador Java. Esse arquivo é o
qualquer editor de Javac programa em Java e JVM para
texto puro e salvo pode ser executado em SOLARIS
com extensão qualquer máquina que
.Java possua a Java Virtual
Machine instalada. É
como se tivéssemos um
computador dentro do JVM para Linux
outro (emulador).

2 – O que é preciso para programar em Java?

Uma das grandes vantagens de programar em Java e também um motivo que


faz a linguagem contar com uma legião de fãs por todo o planeta está na
gratuidade de suas ferramentas de desenvolvimentos. Com extensão do
Access que fazer parte do pacote de aplicativos Office da Microsoft, tudo o
mais que você precisa pode ser obtido na internet.

O ambiente de desenvolvimento em si atende pelo nome de JDK – Java


Development Kit até a versão 1.6.0, ou SDK – Software Development Kit, da
versão 1.4.2 em diante. Mas é conveniente que além do JDK/SDK, você
também use um Ambiente de Desenvolvimento Integrado ou IDE – Integrated

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Development Environment, pois o JDK/SDK trabalha em uma janela do


sistema e isto pode dificultar um pouco a vida de quem esta iniciando.

Todos os exercícios desta apostila foram testados em duas configurações:


Um AMD Duron 1000, com 128 de memória ram.
Um AMD Sempron 2600 com 1 GB de ram.

Creio que você não terá problemas para atingir os mesmos resultados.

2.1 – Baixando o WinZip

Baixe o Winzip a partir do site www.winzip.com. Usuários do Windows XP não


necessitam deste programa. Qualquer versão deve servir. Você pode inclusive,
usar descompactadores de outros fabricantes. Depois de baixar instale o
aplicativo Winzip.

2.2 – Baixando o JDK/SDK

Baixe o JDK/SDK a partir do site java.sun.com. Tenha certeza de esta


baixando a versão para Windows, pois na mesma página encontram-se
versões para outros sistemas, como o Linux e Solaris. Site: www.sun.com.

2.3 – Baixando a documentação do JDK/SDK

A instalação da documentação do JDK/SDK é opcional, mas muito útil não só a


quem está dando os primeiros passos na linguagem, como também para quem
já está na estrada há mais tempo e uma vez ou outra precisa recorrer à
documentação. O único inconveniente é estar em inglês, um obstáculo a quem
não domina este idioma. Mas pode ficar tranqüilo porque a instalação da
documentação é opcional. Baixe a documentação no www.sun.com.

2.4 – Baixando o JCreator

O JCreator é um programa da categoria IDE – Integrated Development


Environment ou melhor, Ambiente de Desenvolvimento Integrado. Ele se
integra ao JDK/SDK para tomar mais amigável o uso do ambiente. O JDK/DSK
continua sendo o verdadeiro responsável pelo trabalho pesado.

Optamos pelo JCreator por ele ser gratuito, pequeno, fácil de usar, estável e
cumpre o que promete: edita o código-fonte, compila, executa e ajuda a
depurar erros. Outras duas características muito úteis são endentações
automáticas e o uso de cores para diferentes partes do código-fonte.

Baixe o JCreator LE que é gratuito e atende as nossas necessidades.


Baixe no site www.jcreator.com.

Na mesma página em que você encontra a versão gratuita está a versão Pro
que é paga e só funciona por 30 dias. Tenha certeza de estar baixando a
versão LE que é gratuita e atende perfeitamente aos nossos objetivos.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

2.5 – Configurando o JCreator

Depois de instalado é hora de configurar o JCreator, quando você iniciar o


JCreator pela primeira vez, ele será configurado. Ao dar o duplo clique no ícone
do JCreator será exibida a caixa de diálogo:

Clique em Next para avançar, aceitando o JCreator como editor associado aos
arquivos Java. Como já foi visto, os arquivos com a extensão Java nada mais
são do que arquivos texto contendo o código-fonte escrito em linguagem Java.

Caso o JCreator não localize automaticamente a pasta na qual você instalou o


JDK/SDK, clique na opção Browse para localizá-la. Depois de localizada
corretamente, clique em Next para avançar.

Se você instalou a documentação do JDK/SDK, clique no Browse para localiza-


la dentro da pasta de instalação do JDK/SDK. Depois de localizada
corretamente, clique em Finish para concluir o processo de configuração do

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

JCreator. Da próxima vez que for executado, estes procedimentos não serão
mais executados.

Tela inicial do JCreator

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

2.6 – Testando o funcionamento do JDK/SDK e do JCreator

Para testar, tanto o JDK/SDK quando o JCreator, vamos iniciar um arquivo


.Java em branco. Clicando em: File -> New -> File , depois clique em Next para
avançar, depois clicando no botão com as... para escolher a pasta onde você
vai guardar seus arquivos. Na opção name digite o nome do seu arquivo Java.
E ao final clique em Finish.

A linguagem Java diferencia letras maiúsculas de minúsculas. O “A” e o “a”, em


se tratando de programação em Java, são completamente diferentes. Portanto,
digite o código apresentando, com a máxima atenção, sem se preocupar com a
endentação que é automática no JCreator. Digite esse código:

import javax.swing.*;
public class teste extends JFrame{
public teste(){
super("Testando o JCreator");
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
teste app = new teste();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Depois que você digitou o código, é preciso compilá-lo. Compilar um programa


é o ato de transformar esse código-fonte em executável ou, no caso do Java,
transformar o código-fonte em classe, pronta para ser interpretada pela
Máquina Virtual Java, da qual falamos anteriormente. Para compilar um código-
fonte no JCreator, basta clicar sobre o botão Complie File. Ao fazer isso, será
criada uma classe de com o nome de teste.class.
Botão Compile File:

Se tudo correu bem, será exibida na parte inferior do JCreator uma janela com
a mensagem Process Completed. O processamento não é imediato. Aguarde
até que alguma mensagem apareça ou o seu bom senso o alerte para algum
problema.

E se o JCreator encontrar algum erro durante a compilação ou execução de


classe, não se preocupe que você será avisado disto. O JCreator interpreta as
mensagens de erro do JDK/SDK e as exibe ao programador. Vamos a um
exemplo prático. Troque a letra “t” (minúscula) do nome do programa teste,
pela letra “T” (maiúsculas) e compile novamente.

Repare que além da mensagem de erro, o JCreator aponta a linha da provável


causa do erro.

Nota: toda vez que você fizer alguma alteração no código-fonte terá de
compilar o código-fonte de novo, para que as mudanças reflitam na classe.

Mas se tudo correu bem durante a compilação do teste.Java, agora você tem
uma classe pronta para se interpretada pela Máquina Virtual Java, Basta clicar
no botão execute File do JCreator.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Esta classe que compilamos e executamos foi uma forma fácil e rápida de
testar o ambiente e também de prepará-lo para os capítulos seguintes da
apostila. A única coisa que ela faz é exibir uma janela com a frase na barra
“Testando o Uso do JCreator”. Feche a janela e depois pressione qualquer
tecla para fechar do console e retornar ao JCreator.
Lembre-se que todos os exercícios e tarefas deste apostila são digitadas,
compiladas e executadas de dentro do JCreator. Se você teve alguma
dificuldade nos passos anteriores, repita-os até está seguro do processo:
Digitar -> Compilar-> Executar -> Depurar quando se fizer necessário, pois
são tarefas fundamentais para a compreensão e prática dos próximos
capítulos.

3 – Conceitos fundamentais de Programação em Java


3.1 – Como programa em Java
O processo utilizado na programação em Java é praticamente o mesmo das
outras linguagens: Digitar -> Compilar-> Executar -> Depurar quando
necessário. O diagrama seguinte ilustra o processo:

Início

Digitação do Código
.Java

Compilar
.class

Problemas na Depuração
compilação?
sim

não

Executar
.class

Fim

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

3.2 – Anatomia de uma Classe

Como vimos no capítulo anterior, a linguagem Java permite a criação de


programas independentes, chamamos de aplicações. Também permite a
criação de pequenas aplicações que rodam no navegador web, as applest
scripts de servidor, os servlets também criação de componentes. Uma classe
padrão:
1. class nomeclasse {
2. public static void main(String args[]){
3. //implementar código.
4. }
5.}

A numeração das linhas não faz parte do programa. Ela serve para ajudar na
identificação de cada linha, as quais vamos analisar a partir de agora.

public – é um modificador de classes e métodos. Significa que a classe ou


método é acessível externamente a esta classe. Isto permite que uma classe
possa utilizar alguma funcionalidade de outra classe.

static – é um outro modificador de métodos e indica que o método deve ser


compartilhado por todos os objetos criados a partir desta classe.

void – usado quando o método não retorna valor.

main – método principal. Obrigatório em aplicações, pois indica ao compilador


o início da execução da linha.

(String args []) – trata-se de um vetor de strings e recebe os argumentos


passados ao programa.

{ e } (abre e fecha chaves) – é entre as chaves que todas as instruções do


programa são colocadas.

Java e Case Sensitive


A linguagem Java é sensível ao contexto. Isto quer dizer que para o
compilador, palavras iguais grafadas em maiúsculas ou minúsculas são
diferentes.

3.3 – Comentários

Os comentários servem para facilitar o entendimento de um programa e


documentar o código. Java possui algumas formas de inserir comentários:

// (duas barras) – para inserir comentários de uma única linha.


/* Exemplo de comentários

/* e */ - (barra + asterisco e asterisco + barra) – para comentários de mais de


uma linha.
/* Exemplo de comentários */

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

3.4 – O uso do ponto-e-vírgula


No final de cada instrução usa-se o ponto-e-vírgula. No início você pode ficar
confuso quanto a usar ou não o ponto-e-vírgula, mas é questão de tempo para
habituar. Além disso, o compilador informa o erro por ausência ou uso indevido
do ponto-e-vírgula.
int a, b; a = 10; b = 20; total = a + b;
3.5 – Tipos de dados
Java possui oito tipos primitivos que servem para armazenar números inteiros,
ponto flutuante, valores booleanos e caracteres. Vamos conhece-las.

Inteiros:
Tipo Tamanho
byte 1 byte
short 2 bytes
Int 4 bytes
long 8 bytes

Ponto Flutuante:
Tipo Tamanho
float 8 byte
double 8 bytes

Caractere:
Tipo Tamanho
char 2 bytes

Booleano:
Tipo Tamanho
boolean 1 byte

Todos esses tipos de variáveis são escritos em letras minúsculas e são


usados, principalmente, na declaração de variáveis:
byte idade; short CEP; char controle;
Além dos oitos tipos básicos, uma variável pode ter uma classe como tipo,
como no exemplo seguinte: String nome = “Java”;
O uso da String é muito comum em Java.
Alguns caracteres especiais que você pode usar são os seguintes:
\n – new linha (quebra de linha)
\t – tab (tabulação)
\f – formfeed (avanço de formulário)
\” – aspas duplas
\’ – aspas simples
\\ - barra invertida
\r – return (retorno do carro)
\b – backspace (retorno apagando)

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

3.6 - Conversão de tipo

Às vezes necessitamos converter um tipo em outro. Um exemplo muito comum


é quando recebemos dados em forma de String. Para que possamos efetuar
operações matemáticas com esses dados, precisamos converte-los em
números.

Tabela de conversão de Tipos

Para converter String em Faça isto


int int novovalor = Integer.parseInt(valor)
Float float novovalor = Integer.parseInt(valor)
Double Int novovalor = Integer.parseInt(valor)

String valor1 = “10”;


String valor2 = “20”;
String valor3 = “30”;

int val1;
float val2;
double val3;

val1 = Integer.parseInt(valor1);
val2 = Float.parseFloat(valor2);
val3 = Double.parseDouble(valor3);

Ou também pode ser feita desta forma:

String valor1 = “10”;


String valor2 = “20”;
String valor3 = “30”;

int val1 = Integer.parseInt(valor1);


float val2 = Float.parseFloat(valor2);
double val3 = Double.parseDouble(valor3);

Conversão entre tipos também pode ser implícitas ou explícitas. Veja os


exemplos:

Conversão implícita:

short numero1 = 10;


long numero2 = numero1; // convertemos short para long

Conversão explícita

long numero1 = 10;


byte numero2 = (byte) numero1; //convertemos long em byte

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

3.7 – Operadores
Operadores
Operador Nome Exemplo de uso
+ Adição A+B
- Subtração A-B
/ Divisão A/B
* Multiplicação A*B
% Módulo A%B
- Negativo (unário) A =-A
++ Incremento A++

++A
-- Decremento A—
--A

Operadores lógicos e relacionais


Operador Nome Exemplo de uso
! NOT (não lógico) !A
&& AND (E lógico) A && B
|| OR (OU lógico) A || B
== Igual A A == B
!= Diferente A != B
< Menor que A<B
> Maior que A>B
<= Menor ou igual A <= B
>= Maior ou igual A >= B

Operadores Bitwise
Operador Nome Exemplo de uso
~ Inversão ~A
& E (and) A&B
| OU (OR) A|B
^ XOU (XOR) A ^B
<< Deslocamento à esquerda A << B
>> Deslocamento à direita A >> B
= atribuição A=B
3.8 – Variáveis

Variáveis são elementos mais básicos que um programa manipula. Uma


variável é um espaço reservado na memória do computador para armazenar
um determinado tipo de dados. As variáveis são declaradas e, opcionalmente,
inicializadas com um valor qualquer. Caso você não atribua nenhum valor, o
Java atribuirá um valor default. Variáveis podem ter qualquer nome, desde que
não sejam nomes de palavras chaves que são usadas nos programas Java. E
as variáveis não podem ser digitadas com espaço e nem acentos.

Exemplos: nome123; nome_da_mae; NomeDoPai; Nome

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

3.9 – Funções matemáticas


O que é? Java possui diversas funções matemáticas que podem ser utilizadas
para simplificar cálculos e expressões.
Como usar? O uso das funções matemáticas é muito simples:
Função Significado
Math.abs(valor) Retorna ao valor absoluto
Math.sqrt(valor) Retorna a raiz quadrada
Math.cos(valor) Retorna o co-seno
Math.sin(valor) Retorna o seno
Math.tan(valor) Retorna a tangente
Math.acos(valor) Retorna ao arco co-seno
Math.asin(valor) Retorna ao arco seno
Math.atan(valor) Retorna ao arco tangente
Math.round(valor) Arredonda para seu inteiro mais próximo
Math.floor(valor) Arredonda o valor de um número para baixo
Math.ceil(valor) Arredonda o valor de um número para cima
Math.log(valor) Retorna o valor do logaritmo natural
Math.min(valor,valor1) Retorna o valor mínimo entre 2 números
Math.max(valor,valor1) Retorna o valor máximo entre 2 números
Math.PI Retorna o valor de PI
Math.E Valor da base do logaritmo natural
Math.pow(base,potencia) Potenciação
(Int) (Math.random()*100) Gera números aleatórios

4 – Introdução a interface gráficas em Java


Agora vamos falar sobre o pacote javax.swing, sua relação com o pacote
java.awt e introduziremos a classe JFrame, componente principal dos
aplicativos de interface gráfica em Java.
4.1 – Entendo o Swing

Contrário ao que muitos desenvolvedores e estudantes de Java pensam, o


Swing não é um subtítulo do AWT (Abstract Window Toolkit). Em vez disso, o
Swing é visto como uma cama disposta confortavelmente sobre o AWT. É
praticamente impossível falar de Swing sem mencionar alguns aspectos
relevantes e no momento oportuno veremos como eles se complementam.

O papel principal do AWT era fornecer um conjunto de componentes gráficos


destinados a facilitar a construção das interfaces gráficas para aplicativos e
applets em versões mais antigas do Java. De fato, o AWT continua sendo uma
das partes mais importantes do JFC (Java Foundation Classes) ao lado de
Swing, Accessibility Java 2D e Drag na Drop. Java 2 é agora parte do AWT e o
suporte Accessibility já está incluso no Swing.
Compone

List Button Containe Label CheckBox


r
Window

Frame
A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Esta hierarquia não está completamente. Mostramos apenas alguns dos


componentes para que o leitor veja como todos eles descendem de um
componente em comum, ou seja, a classe Component. Atenção deve ser à
classe Container, descendente direta da classe Component.
Um Component tem uma representação gráfica, de modo que ele possa ser
exibido na tela e forneça meios de interação com o usuário. A classe
Component define os métodos, propriedades e eventos que pode ser aplicados
a todos os componentes derivados dessa classe, incluído as classes Button,
Canvas, Label, Container, etc.
O Swing é um grande grupo de componentes visuais escritos em Java puro
(diferentes de alguns componentes AWT, que estão associados às
capacidades de renderização de interfaces gráficas da plataforma em que o
aplicativo está sendo executado).
Um componente do Swing é reconhecido pela letra “J” antecedendo o nome do
mesmo componente na hierarquia AWT. Assim, se no AWT temos o
componente Button, em Swing esse componente é chamado de JButton. Label
passa a ser chamado de JLabel, Frame de JFrame e assim por diante. Uma
recomendação é que você investigue na documentação on-line a diferença, por
exemplo, entre a funcionalidade de um button e um JButton
4.11 – Uso do JFrame na construção de janelas no aplicativo
Se você já leu outro material sobre interfaces gráficas em Java, deve estar se
perguntando por que preferimos não iniciar a apostila falando de caixas de
texto, rótulos, botões e outros componentes de interface. A razão é simples. A
janela do aplicativo é a parte mais importante da interface, além de ser o
fundamento sobre o qual os demais componentes serão construídos. Mas, o
fato de não reservamos muita atenção ao estudo das janelas dos aplicativos
provém do uso excessivo dos IDEs visuais (os famosos Ambientes de
Desenvolvimento Integrado).
A classe JFrame é uma versão melhorada de Frame que traz consigo suporte
aos componentes Swing. Essa classe fornece todas as propriedades, métodos
e eventos que precisamos para construir janela, tais como as que nossos
usuários estão acostumados a visualizar em seus sistemas. Ora, o usuário
sabe que a janela de um aplicativo pode ser minimizada, maximizada,
redimensionada, e etc. Então vamos demonstrar a classe JFrame serve aos
nossos propósitos.
A janela principal de um aplicativo de interface gráfica em Java é criada como
uma instância da classe JFrame (com exceção de Applets). A classe JFrame
herda diretamente de Frame, como mostra a figura seguinte:
Compone

List Button Containe Labe CheckBox


r l
Window

Frame JFrame

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Considerações a serem levadas antes de começar a programa.

Quando o usuário encontrar esse símbolo em algum aplicativo, significa


que a linha debaixo tem que ser digitada na mesma linha.
Exemplo: public class NomePrograma
extends JFrame{
Quando você for digitar essa linha no JCreator, ela tem que ser digitada inteira
pois o método ou comando quando for compilado, encontrá erro.

4.12 - Janela normal


import javax.swing.*;
public class PrimeiraJanela extends JFrame{
public PrimeiraJanela(){
super("Nossa primeira janela");
setSize(300, 150);
setVisible(true); }
public static void main(String args[]){
PrimeiraJanela app = new PrimeiraJanela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

Vamos analisar cada linha do aplicativo.

Tenha a certeza de importar esse pacote em todos os aplicativos de interface gráfica


que estiver escrevendo: import javax.swing.*;

Em seguida temos a definição da classe principal:

public class PrimeiraJanela extends JFrame


{
// a implementação da classe vai aqui.
}
Observe como a classe PrimeiraJanela, que será a janela do aplicativo, herda da
classe JFrame. A partir desse ponto, nossa classe possui todas as propriedades,
métodos e eventos que precisamos para que o aplicativo possa ser minimizado,
maximizado e fechado por meios dos botões na barra de títulos. Dentro da classe
temos o construtor padrão, que será invocado quando uma instância dessa classe for
criada (o que acontecerá quando a janela for exibida na tela):
import javax.swing.*;
public class PrimeiraJanela extends JFrame
{
public PrimeiraJanela(){
super("Nossa primeira janela");
setSize(300, 150);
setVisible(true); }

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Uma classe JFrame pode ser instanciada de duas maneiras: app = new()

que cria uma instância da classe que é inicialmente invisível, mas sem um título
na barra de títulos, ou: app = new(String Título)

que cria uma instância da classe inicialmente invisível e com um objeto String
representando o texto da barra de títulos. Assim, no construtor da classe
PrimeiraJanela, invocamos o segundo construtor da superclasse JFrame
fornecendo o texto que queremos como título da janela.

Após a definição do título da janela, temos uma chamada ao método setSize:

setSize(300, 150); - (300 – Altura e 150 – largura)

Finalmente exibimos a janela efetuando uma chamada ao método setVisible o


qual apresenta a seguinte sintaxe: setVisible(true);

Para finalizar o código para a janela, temos a definição do método main():

public static void main(String args[])


{
PrimeiraJanela app = new PrimeiraJanela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

Na primeira linha criamos uma instância da classe PrimeiraJanela e a atribuímos à


referência app, então acessamos o método setDefaultCloseOperation e fornecemos
o valor EXIT_ON_CLOSE, que é uma das constantes da classe JFrame que define
como o aplicativo vai se comportar quando o usuário tentar fechar a janela, seja
clicando no botão fechar na barra de títulos ou pressionando ALT + F4. Veja no
quadro outros valores que você pode usar:

Valor da Constante Resultado


Faz com que a janela seja apenas ocultada quando o
usuário tentar fechar o aplicativo, ou seja, o programa
HIDE_ON_CLOSE continua sua execução. O uso desse valor só é
justificado quando queremos que a janela ou algum de
seus componentes esteja disponível para acesso e
manipulação, mas não queremos que isso seja visível
aos olhos do usuário.
Faz com que o usuário não seja capaz de fechar a
janela. Neste caso você deve efetuar algum
DO_NOTHING_ON_CLOSE processamento e fechar a janela, baseado em alguma
ação específica no seu código.
Libera, ou seja, retira da memória, tanto a janela do
aplicativo quanto seus componentes. A diferença entre
DISPOSE_ON_CLOSE este valor e HIDE_ON_CLOSE é que o primeiro oculta
a janela e só então libera da memória.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

4.2 - Janela Maximizada: setExtendedState(MAXIMIZED_BOTH);


import javax.swing.*;
public class JanelaMaximizada extends JFrame{
public JanelaMaximizada(){
super("Como exibir a janela maximizada");
setSize(300, 150);
setVisible(true);
setExtendedState(MAXIMIZED_BOTH);
}
public static void main(String args[]){
JanelaMaximizada app = new JanelaMaximizada();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

4.3 - Janela minimizada: setExtendedState(ICONIFIED);


import javax.swing.*;
public class JanelaMinimizada extends JFrame{
public JanelaMinimizada(){
super("Como exibir a janela minimizada");
setSize(300, 150);
setVisible(true);
setExtendedState(ICONIFIED);
}
public static void main(String args[]){
JanelaMinimizada app = new JanelaMinimizada();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
4.4 – Janela que não pode ser redimensionada: setResizable(false);
Por padrão, as janelas dos aplicativos em Java podem ser redimensionadas
em tempo de execução, ou seja, durante a execução do programa. Algumas
vezes não queremos que o usuário seja capaz de alterar o tamanho da janela.
Com a lista abaixo podemos fazer com que a janela não seja redimensionada:

import javax.swing.*;
public class TamanhoFixo extends JFrame{
public TamanhoFixo(){
super("Uma janela não dimensionável");
setResizable(false);
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
TamanhoFixo app = new TamanhoFixo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

4.5 – Janela Centralizada: setLocationRelativeTo(null);

import javax.swing.*;
public class JanelaCentralizada extends JFrame{
public JanelaCentralizada (){
super("Janela Centralizada");
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
JanelaCentralizada app = new JanelaCentralizada ();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

4.6 – Trocando a cor do fundo da janela


Embora as propriedades mais importantes da janela do aplicativo já tenham
sido vista a possibilidade de alterar a cor de fundo da janela só pôde ser
apresentada agora. Isso se deve ao fato de a cor do fundo ser definida não
para a classe JFrame, mas para o painel de conteúdo, ou seja o objeto
Container que contém os controles da janela.
O aplicativo seguinte exibe uma janela com a cor azul definida como cor de
fundo. Observado que a cor de fundo para painel não afetará os demais
controles da janela. Veja o aplicativo abaixo:
import javax.swing.*;
import java.awt.*;
public class CorDeFundo extends JFrame{
public CorDeFundo(){
super("Definindo a cor de fundo para a janela");
Container tela = getContentPane();
tela.setBackground(Color.blue);
setSize(500, 100);
setVisible(true);
}
public static void main(String args[]){
CorDeFundo app = new CorDeFundo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Temos que importar o pacote import java.awt.*;, pois a classe Container está
nele. Veja como uma instância dessa classe é criada e atribuída à referência
tela: Container tela = getContentPane();

Após essa declaração o tela é um objeto Container que representa a janela do


aplicativo. Por meio dessa referência podemos adicionar e manipular os novos
componentes. Comando que troca a cor de fundo da janela:
tela.setBackground(Color.blue);

Você pode usar: red, white, green, silver

4.7 – Usando cores personalizadas para suas janelas

Você sabia que você pode editar cores personalizadas para suas janelas de
aplicativos Java? Com o comando setBackground (), isso é possível.
Veja o exemplo:

import javax.swing.*;
import java.awt.*;
public class CorDeFundo2 extends JFrame{
public CorDeFundo2(){
super("Definindo a cor de fundo para a janela");
Container tela = getContentPane();
tela.setBackground(new Color(255,128,128));
setSize(500, 100);
setVisible(true);
}
public static void main(String args[]){
CorDeFundo2 app = new CorDeFundo2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

tela.setBackground(new Color(255,128,128));

tela.setBackground(new Color(255,228,228));

tela.setBackground(new Color(255,255,204));

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

4.8 – Definindo um ícone para a janela do aplicativo


Nada contra o ícone padrão das janelas dos aplicativos Java. Mas, seria bem
interessante se pudéssemos definir um ícone que lembra nossa marca, ou
talvez um ícone que represente melhor a funcionalidade do aplicativo.
import javax.swing.*;
public class DefinirIcone extends JFrame{
public DefinirIcone(){
super("Como definir o ícone para a janela");
ImageIcon icone = new ImageIcon("teste.gif");
setIconImage(icone.getImage());
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
DefinirIcone app = new DefinirIcone();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Após executar o aplicativo, observe como o ícone padrão (a xícara de café) foi
alterada, substituída pela imagem que foi adicionada no aplicativo.

A definição de um ícone para a janela pode ser realizada com apenas duas
linhas de código: ImageIcon icone = new ImageIcon("teste.gif");
setIconImage(icone.getImage());

Na primeira linha criamos uma instância da classe ImageIcon e a atribuímos à


referência ícone. Objetos desta classe podem ser criados por meio de nove
construtores diferentes. Optamos por aquele que recebe o caminho e/ou nome
da imagem como argumento. Veja sua sintaxe:
ImagemIcon(String caminho_e_nome_da_imagem);
ImageIcon("teste.gif");

Só precisamos fornecer o nome da imagem ou o caminho e o nome da


imagem. É importante observar que esse caminho é sempre transformado em
uma URL antes de ser passado para o construtor da classe. Assim, você pode
fornecer uma imagem usando apenas o nome da imagem:
ImageIcon icone = new ImageIcon("teste.gif");

O Caminho e o nome da imagem:


ImageIcon icone = new ImageIcon("imagens/teste.gif");

Após iniciamos a classe ImageIcon, fazemos uso do método getImage dessa


classe para obter a imagem e a definimos como ícone da janela com uma
chamada a setIconImage da classe JFrame. setIconImage(icone.getImage());

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

5 – Adicionando componentes JLabel ou rótulos na sua janela

Freqüentemente chamado de rótulo, esse componente raramente tem seu


conteúdo alterado e, quando usado corretamente, possibilita manipulações
bem interessantes, como veremos a segui. Vamos começar escrevendo um
aplicativo que permite instanciar as classe JLabel de maneiras diferentes.
Esse aplicativo que adiciona JLabel, posiciona na janela, altera a cor e altera a
fonte desse componente:

import javax.swing.*;
import java.awt.*;
public class ExemploLabel extends JFrame{
JLabel rotulo1,rotulo2,rotulo3,rotulo4;
public ExemploLabel(){
super("Exemplo com Label");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel ("Nome");
rotulo2 = new JLabel ("Idade");
rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");
rotulo1.setBounds(50,20,80,20);
rotulo2.setBounds(50,60,80,20);
rotulo3.setBounds(50,100,80,20);
rotulo4.setBounds(50,140,80,20);
rotulo1.setForeground(Color.red);
rotulo2.setForeground(Color.blue);
rotulo3.setForeground(new Color(190,152,142));
rotulo4.setForeground(new Color(201,200,100));
rotulo1.setFont(new Font("Arial",Font.BOLD,14));
rotulo2.setFont(new Font("Comic Sans MS",Font.BOLD,16));
rotulo3.setFont(new Font("Courier New",Font.BOLD,18));
rotulo4.setFont(new Font("Times New Roman",Font.BOLD,20));
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);
setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploLabel app = new ExemploLabel();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Veja o programa depois de executado:

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Para entender melhor como funciona o programa destacamos alguns trechos


do programa, sempre lembrando que temos que no começo do programa
importar esses pacotes que adicionam conteúdos a janela:
import javax.swing.*;
import java.awt.*;

5.1 - Apos fazermos as importações vamos criar os objetos do tipo JLabel:


JLabel rotulo1,rotulo2,rotulo3,rotulo4;

5.2 - Em seguida atribuir o conteúdo ao JLabel:


rotulo1 = new JLabel ("Nome");
rotulo2 = new JLabel ("Idade");
rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");

5.3 - Próximo passo definir o largura e altura do JLabel e a coluna e a linha que
ele irá ocupar na janela.
rotulo1.setBounds(50,20,80,20);
rotulo2.setBounds(50,60,80,20);
rotulo3.setBounds(50,100,80,20);
rotulo4.setBounds(50,140,80,20);

50 – Coluna, 20 – linha, 80 – largura, 20 - comprimento

Comprimento 80
Linha 20

Linha 60

Linha 100 Altura 20


Linha 140

Coluna 50

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

5.4 - Próximo passo definir a cor da letra dos componentes JLabel, lembrando
que se esses objetos não forem adicionados ao aplicativo, a cor default é preto.

rotulo1.setForeground(Color.red);
rotulo2.setForeground(Color.blue);

5.5 - Esses dois trechos abaixo especifica como criar cores personalizadas
para o componente JLabel.

rotulo3.setForeground(new Color(190,152,142));
rotulo4.setForeground(new Color(201,200,100));

5.6 - E ainda podemos definir a fonte, o estilo e o tamanho da letra do


componente JLabel.

rotulo1.setFont(new Font("Arial",Font.BOLD,14));
rotulo2.setFont(new Font("Comic Sans MS",Font.BOLD,16));
rotulo3.setFont(new Font("Courier New",Font.BOLD,18));
rotulo4.setFont(new Font("Times New Roman",Font.BOLD,20));

Lembrando que o nome da fonte tem que ser definida como esta na opção de
fonte do sistema.

Exemplo: Comic Sans MS,


Courier New,
Arial, Lucida Sans,
Tahoma,
Times New Roman

Já o estilo pode ser definido como:


Font.BOLD fonte em negrito
Font.ITALIC fonte em itálico
Font.PLAIN fonte normal
Font.BOLD+Font.ITALIC negrito e itálico

E a numeração corresponde o tamanho da fonte.

rotulo1.setFont(new Font("Arial",Font.BOLD,14));

Você pode definer 14, 16, 18, 20 entre outros tamanhos que fica a escolha do
usuário.

E finalmente o método tela que representa a janela deverá ser chamado, onde
vai exibir o rótulo o conteúdo do JLabel na janela.

tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

5.7 – Adicionando imagem ao componente JLabel

É Possível exibir imagem em rótulos como instâncias da classe JLabel. Tais


rótulos podem conter apenas imagens ou imagens e texto. O aplicativo
seguinte mostra apenas uma imagem adicionada com um JLabel na janela.
Exemplo:

import javax.swing.*;
import java.awt.*;
public class LabelImagem extends JFrame{
JLabel imagem;
public LabelImagem(){
super("Uso da classe JLabel com Imagem");
Container tela = getContentPane();
ImageIcon icone = new ImageIcon("sapo.jpeg");
imagem = new JLabel(icone);
tela.add(imagem);
setSize(500, 460);
setVisible(true);
}
public static void main(String args[]){
LabelImagem app = new LabelImagem();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

6 – Adicionando componentes JTextField ou caixa de texto na sua janela

A classe JTextField possibilita a criação de caixas de texto de uma única linha.


Os usos mais freqüentes desse controle são para receber e validar dados
informados pelo usuário do aplicativo. Essa classe herda a maioria de seus
atributos, eventos e métodos da classe JTextComponent.
import javax.swing.*;
import java.awt.*;
public class ExemploJTextField extends JFrame{
JLabel rotulo1,rotulo2,rotulo3,rotulo4;
JTextField texto1,texto2,texto3,texto4;
public ExemploJTextField (){
super("Exemplo com JTextField");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel ("Nome");
rotulo2 = new JLabel ("Idade");
rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");
texto1 = new JTextField(50);
texto2 = new JTextField(3);
texto3 = new JTextField(10);
texto4 = new JTextField(10);
rotulo1.setBounds(50,20,80,20);
rotulo2.setBounds(50,60,80,20);
rotulo3.setBounds(50,100,80,20);
rotulo4.setBounds(50,140,80,20);
texto1.setBounds(110,20,200,20);
texto2.setBounds(110,60,20,20);
texto3.setBounds(110,100,80,20);
texto4.setBounds(110,140,80,20);
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);
tela.add(texto1);
tela.add(texto2);
tela.add(texto3);
tela.add(texto4);
setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextField app = new ExemploJTextField();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Vejamos agora os trechos principais que fazem com que as caixas de texto
apareçam na janela.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Declarar os objetos: TextField texto1,texto2,texto3,texto4;


Estipular a quantidade de caracteres para as caixas de texto:
texto1 = new JTextField(50); texto2 = new JTextField(3);
texto3 = new JTextField(10); texto4 = new JTextField(10);
Especificar posicionamento das caixas:
texto1.setBounds(110,20,200,20);
texto2.setBounds(110,60,20,20);
texto3.setBounds(110,100,80,20);
texto4.setBounds(110,140,80,20);
E chamar o método tela para exibir as caixas na janela:
tela.add(texto1); tela.add(texto2); tela.add(texto3); tela.add(texto4);
Estamos vendo agora a janela com os componentes acionados.

6.1 – Foco para uma caixa de texto


Podemos também utilizar o comando requestFocus(); para apontar o foco
para uma determinada caixa de texto: texto1. requestFocus();
6.2 – Cor da fonte para a caixa de texto
Podemos também utilizar o comando setForeground(Color.cor); para alterar
a cor da fonte da caixa de texto: texto1. setForeground(Color.cor);
6.3 – Trocando a fonte, estilo e tamanho da fonte do JtextField:
Texto1.setFont(new Font("NomeFonte",Font.ESTILO,TAMANHO));
6.4 – Alinhamento do texto de uma caixa de texto
O comando setHorizontalAlignment() define o alinhamento dentro da caixa de
texto: texto1. setHorizontalAlignment(JTextField.LEFT);
setHorizontalAlignment (JTextField.RIGHT); posiciona o texto dentro da
caixa de compra da direita pra esquerda,
setHorizontalAlignment(JTextField.LEFT); posiciona o texto dentro da caixa
da esquerda pra direita.
setHorizontalAlignment(JTextField.CENTER); centraliza o texto dentro da
caixa de texto.
6.5 – Alteração da cor de fundo da caixa de texto
Como visto anteriormente podemos efetuar essa alteração chamando o
comando: texto1.setBackground(Color.blue);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

7 – Adicionando componentes JButton ou botões a sua janela


A classe JButton herda de AbstractButton, uma classe que herda de
JComponet e define o comportamento básico para os botões e itens de menu.
Como ocorre com instâncias da classe JLabel, objetos da classe JButton
podem conter texto, texto e imagem ou apenas imagens.Seguindo os mesmo
métodos dos outros aplicativos de como adicionar componentes na janela esse
também segue o mesmo modelo.
7.1 - Botão somente com texto: Veja o exemplo de botão sem imagem:
import javax.swing.*;
import java.awt.*;
public class ExemploBotao extends JFrame{
JButton botão;
public ExemploBotao(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botao = new JButton ("Procurar");
botao.setBounds(50,20,100,20);
tela.add(botao);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploBotao app = new ExemploBotao();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
7.2 - Botão com texto e imagem: Exemplo de um botão com imagem:
import java.awt.*;
import java.awt.event.*;
public class ExemploBotao extends JFrame{
JButton botao;
ImageIcon icone;
public ExemploBotao(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
icone = new ImageIcon("abrir.gif");
botao = new JButton ("Abrir",icone);
botao.setBounds(50,20,100,20);
tela.add(botao);
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
ExemploBotao app = new ExemploBotao();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Analisando o programa, declaramos o ícone como ImageIcon, depois


adicionamos a figura a ícone, icone = new ImageIcon("abrir.gif"); no final
adicionamos o ícone junto ao texto do botão, botao = new JButton
("Abrir",icone); e com o objeto tela, tela.add(botao); adicionamos o botão a
janela.

7.3 - Botão somente com imagem: Exemplo de botão somente com figura:

import java.awt.event.*;
public class ExemploBotao extends JFrame{
JButton botao;
ImageIcon icone;
public ExemploBotao(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
icone = new ImageIcon("abrir.gif");
botao = new JButton (icone);
botao.setBounds(50,20,100,20);
tela.add(botao);

setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}

public static void main(String args[]){


ExemploBotao app = new ExemploBotao();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Muito simples fazer esse tipo de botão com o aplicativo anterior de botão com
imagem basta você retirar o texto de dentro da linha que somente a imagem
será adicionada, veja a linha:
Linha do botão com texto e imagem: botão = new JButton (“Abrir”,icone);
Linha do botão somente com imagem: botão = new JButton (icone);
Aplicativo com os três botões

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

7.4 – Adicionando vários botões na janela


Veja o exemplo:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotao extends JFrame{
JButton botao1,botao2,botao3,botao4;
public ExemploBotao(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Próximo >>");
botao4 = new JButton ("Abrir");

botao1.setBounds(50,20,100,20);
botao2.setBounds(50,60,100,20);
botao3.setBounds(50,100,100,20);
botao4.setBounds(50,140,100,20);

tela.add(botao1);
tela.add(botao2);
tela.add(botao3);
tela.add(botao4);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploBotao app = new ExemploBotao();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

7.5 – Definir a cor de fundo para um componente JButton

Para trocar a cor de fundo basta adicionar no aplicativo anterior as seguintes


linhas:
botao1.setBackground(Color.yellow);
botao2.setBackground(Color.red);
botao3.setBackground(Color.blue);
botao4.setBackground(Color.white);

7.6 – Definir teclas de atalho para objetos JButton

Para definir as teclas de atalhos temos que importar o pacote:


import java.awt.event.*; no inicio do programa

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

E adicione as seguintes linhas dentro do aplicativo anterior:


botao1.setMnemonic(KeyEvent.VK_P);
botao2.setMnemonic(KeyEvent.VK_V);
botao3.setMnemonic(KeyEvent.VK_X);
botao4.setMnemonic(KeyEvent.VK_S);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

7.7 – Qual botão reagirá ao pressionamento da tecla enter

Você pode passar o foco para um determinado botão assim que pressionar a
tecla enter, Com o comando getRootPane().setDefaultButton(). Basta digitar
o comando getRootPane().setDefaultButton(botao);

botão é o nome do botão que você definiu no programa, nesse exemplo definir
o último botão.

Quando você pressionar a tecla Enter o botão que receberá o foco piscará.

Veja o resultado:

7.8 - Alterando a cor do texto de um componente JButton

Basta adicionar as seguintes linhas dentro do aplicativo:

botao1.setForeground(Color.blue);
botao2.setForeground(Color.green);
botao3.setForeground(Color.red);
botao4.setForeground(Color.pink);

Resultado do programa:

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

8 - Adicionando componentes JPasswordField

A classe JPasswordField possibilita a criação de caixas de texto para a


digitação de senhas. Esta classe herda diretamente de JTextField e, portanto,
permite a aplicação de todas as técnicas já vista na classe JTextField.

No aplicativo abaixo vamos ver como funciona esse componente:


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJPasswordField extends JFrame{
JPasswordField caixa;
JLabel rotulo;
public ExemploJPasswordField(){
super("Exemplo com JPasswordField");
Container tela = getContentPane();
setLayout(null);
rotulo = new JLabel("Senha: ");
caixa = new JPasswordField(10);
rotulo.setBounds(50,20,100,20);
caixa.setBounds(50,60,100,20);
tela.add(rotulo);
tela.add(caixa);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJPasswordField app = new ExemploJPasswordField();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

8.1 – Alterando a cor de fonte de um JPasswordField

caixa.setForeground(Color.blue); você poderá trocar a cor da letra da caixa


de texto. No caso essa letra vai ficar azul.

8.2 – Definir uma cor personalizada para o componente JPasswordField

Você também pode definir uma cor para letra conforme seu gosto usando essa
linha caixa.setForeground(new Color(115,99,128));

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

8.3 – Alterando a cor de fundo de um componente JPasswordField


Você pode digitar essa linha no aplicativo anterior:
caixa.setBackground(Color.yellow);
A caixa de texto dentro ficará com a cor amarela por dentro

8.4 – Cor de fundo personalizada para o componente JPasswordField


Ao digitar essa linha no aplicativo dentro da caixa de texto ficará com a cor
rosa. Onde você mesmo pode definir sua cor.
caixa.setBackground(new Color(255,128,128));

8.5 – Alterar tipo de fonte, estilo e tamanho da letra do componente


Com essa linha você pode alterar o estilo da fonte o tipo e o tamanho da fonte.
caixa.setFont(new Font("Ariel",Font.BOLD,20));
Exemplos para essa fonte você pode aproveitar o exemplo do JTextField

8.6 – Alterando o caracter que aparece no componente JPasswordField


Você pode personalizar qual caracter vai aparecer na sua caixa de texto basta
você digitar essa linha caixa.setEchoChar('*');

Dentro dos parênteses você pode adicionar qualquer caracter.

9 – Controle JFormattedTextField para data, telefone, CEP, CPF

O componente JFormattedTextField, similar a uma caixa de texto JTextField,


fornece a possibilidade da validação e exibição de dados formatados em tempo
real, ao seja, à medida que seu conteúdo é inserido. Esse componente é
conhecido nas linguagens Visual Basic, Delphi, C++ como MaskEdit, ou
simplesmente caixa de texto tipo máscara.

A vantagem de usar uma caixa de texto tipo máscara é que o usuário é forçado
a digitar os dados no formato especificado. O controle não aceita conteúdo que
não siga os padrões predefinidos.

Antes de usar o componente JFormattedTextField, é preciso entender o


funcionamento da classe MaskFormatter (do pacote javax.swing.text). Essa
classe é usada para especificar a máscara que será usada na caixa de texto.
Para definir os caracteres que serão aceitos, você deve usar a seguinte tabela:

Símbolo Valor Aceito


# Um número
? Uma letra
A Uma letra ou um número
* Qualquer conteúdo será aceito pelo controle
U Uma letra convertida em maiúsculo
L Uma letra convertida em minúsculos

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Obtida a tabela vamos ver essa classe em ação. O aplicativo seguinte exibe
quatro caixas de texto na qual deve ser digitado o CEP, TELEFONE, CPF e
uma DATA qualquer.

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
public class ExemploJFormattedTextField extends JFrame{

JLabel rotulocep,rotulotel,rotulocpf,rotulodata;
JFormattedTextField cep,tel, cpf, data;
MaskFormatter mascaracep,mascaratel, mascaracpf, mascaradata;

public ExemploJFormattedTextField(){
super("Exemplo com JFormattedTextField");
Container tela = getContentPane();
setLayout(null);

rotulocep = new JLabel("CEP: ");


rotulotel = new JLabel("Telefone: ");
rotulocpf = new JLabel("CPF: ");
rotulodata = new JLabel("Data: ");
rotulocep.setBounds(50,40,100,20);
rotulotel.setBounds(50,80,100,20);
rotulocpf.setBounds(50,120,100,20);
rotulodata.setBounds(50,160,100,20);

try{
mascaracep = new MaskFormatter("#####-###");
mascaratel = new MaskFormatter("(##)####-####");
mascaracpf = new MaskFormatter("#########-##");
mascaradata = new MaskFormatter("##/##/####");
mascaracep.setPlaceholderCharacter(‘_’);
mascaratel.setPlaceholderCharacter(‘_’);
mascaracpf.setPlaceholderCharacter(‘_’);
mascaradata.setPlaceholderCharacter(‘_’);
}
catch(ParseException excp){}

cep = new JFormattedTextField(mascaracep);


tel = new JFormattedTextField(mascaratel);
cpf = new JFormattedTextField(mascaracpf);
data = new JFormattedTextField(mascaradata);

cep.setBounds(150,40,100,20);
tel.setBounds(150,80,100,20);
cpf.setBounds(150,120,100,20);
data.setBounds(150,160,100,20);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tela.add(rotulocep);
tela.add(rotulotel);
tela.add(rotulocpf);
tela.add(rotulodata);
tela.add(cep);
tela.add(tel);
tela.add(cpf);
tela.add(data);

setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJFormattedTextField app = new ExemploJFormattedTextField();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Para construir o exemplo, usamos as variáveis globais:


FormattedTextField cep,tel, cpf, data;
MaskFormatter mascaracep,mascaratel, mascaracpf, mascaradata;

O código que inicializa a máscara foi inserido em um bloco try{ } de modo a


evitar uma exceção:
try{
mascaracep = new MaskFormatter("#####-###");
mascaratel = new MaskFormatter("(##)####-####");
mascaracpf = new MaskFormatter("#########-##");
mascaradata = new MaskFormatter("##/##/####");
mascaracep.setPlaceholderCharacter(‘_’);
mascaratel.setPlaceholderCharacter(‘_’);
mascaracpf.setPlaceholderCharacter(‘_’);
mascaradata.setPlaceholderCharacter(‘_’);
}
catch(ParseException excp){}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Observe o uso do símbolo # para permitir somente valores numéricos e uma


chamada ao método setPlaceholderCharacter para definir o caractere que
será exibido como marcador para a máscara, geralmente o caractere de
sublinhado. Essa máscara é fornecida como argumento para o construtor da
classe JFormattedTextField:

cep = new JFormattedTextField(mascaracep);


tel = new JFormattedTextField(mascaratel);
cpf = new JFormattedTextField(mascaracpf);
data = new JFormattedTextField(mascaradata);
9.1 – Adicionando cores na letra do JFormattedTextField
Essas linhas podem ser adicionadas no programa anterior acima do objeto tela.

cep.setForeground(Color.blue);
tel.setForeground(Color.red);
cpf.setForeground(Color.green);
data.setForeground(new Color(255,128,128));

9.2 – Adicionando cores no fundo do JFormattedTextField


Já esses códigos podem ser adicionados logo abaixo ao anterior.

cep.setBackground(Color.yellow);
tel.setBackground(Color.yellow);
cpf.setBackground(new Color(255,255,204));
data.setBackground(new Color(255,255,204));

9.3 – Alterando o tipo, estilo, tamanho da fonte do JFormattedTextField


Já esses códigos podem ser adicionados logo abaixo ao anterior.

cep.setFont(new Font("Times New Roman",Font.BOLD,14));


tel.setFont(new Font("Comic Sans MS",Font.PLAIN,14));
cpf.setFont(new Font("Arial",Font.BOLD,14));
data.setFont(new Font("Tahoma",Font.BOLD,14));

Aplicativo sendo executado depois de todos os códigos Java, estarem


adicionados no aplicativo, veja os efeitos com as cores:

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

10 – Fazendo um JButton executar uma ação

10.1 – Clicando no botão para fechar uma janela

Exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoSair extends JFrame{
JButton botaosair;
public ExemploBotaoSair(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botaosair = new JButton ("Sair");
botaosair.setBounds(100,50,100,20);
botaosair.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
tela.add(botaosair);
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
ExemploBotaoSair app = new ExemploBotaoSair();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Como funciona o aplicativo sempre lembrando que temos que importar os


pacotes:

import javax.swing.*; - pacote que exibe conteúdos na janela


import java.awt.*; - pacote que exibe conteúdos na janela
import java.awt.event.*; - pacote que trabalha com os eventos

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Como já visto em outros aplicativos:


Declarar o componente como JButton: JButton botaosair;
Atribuir o texto ao botão: botaosair = new JButton ("Sair");
Posicionar o botão na janela: botaosair.setBounds(100,50,100,20);
E chama o objeto tela para exibir o componente: tela.add(botaosair);
Explicando o funcionamento do botão:
botaosair.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
addActionListener – Adicionar ação a lista que estará dentro do botão.

new ActionListener – Chamando nova ação a ser listada.

public void actionPerformed(ActionEvent e) –


performance da ação que o evento público chamara que será o exit.

System.exit(0); - Finaliza o aplicativo

Use sempre essa lista para fazer qualquer botão funcionar ou chama algum
evento:
nomebotao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
}
}
);

10.2 – Clicando no mostrar para descobrir a senha digitada


Um aplicativo simples mais muito interessante de ser observado, o usuário
digita a senha e clicando em mostrar será habilitado um JLabel mostrando qual
a senha que foi digitada. Veja o exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SenhaDigitada extends JFrame{
JPasswordField caixa;
JLabel rotulo, exibir;
JButton mostrar;
public SenhaDigitada(){
super("Exemplo com JPasswordField");
Container tela = getContentPane();
setLayout(null);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

rotulo = new JLabel("Senha: ");


caixa = new JPasswordField(10);
exibir = new JLabel("A senha digitada é: ");
mostrar = new JButton("Mostrar");
exibir.setVisible(false);
rotulo.setBounds(50,20,100,20);
caixa.setBounds(50,60,200,20);
exibir.setBounds(50,120,200,20);
mostrar.setBounds(150,100,80,20);
mostrar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String senha = new String(caixa.getPassword());
exibir.setVisible(true);
exibir.setText(senha);
}
}
);
tela.add(rotulo);
tela.add(caixa);
tela.add(exibir);
tela.add(mostrar);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
SenhaDigitada app = new SenhaDigitada();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Um aplicativo muito fácil de ser compreendido, de diferente ao anterior que já
foi visto na parte JPasswordField só acrescentamos um novo JLabel que
quando iniciado vem oculto, e dentro do evento do botão criamos uma variável
chamada senha do tipo String, onde ela recebe uma String que vem da caixa
da senha e então é convertida em caracteres normal. E depois será habilitado
novamente o JLabel.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

10.3 – Clicando no botão somar e será mostrada a soma dos números

Já nesse aplicativo alguns métodos novos foram aplicados, esse pede um


pouquinho de nossa atenção, alguns componentes foram colocados ao lado
para não ficar muito extenso e ser mais fácil de compreender.

Veja o exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Soma extends JFrame{
JLabel rotulo1, rotulo2,exibir;
JTextField texto1,texto2;
JButton somar;
public Soma(){
super("Exemplo de soma");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("1º Número: ");
rotulo2 = new JLabel("2º Número: ");
texto1 = new JTextField(5);
texto2 = new JTextField(5);
exibir = new JLabel("");
somar = new JButton("Somar");

rotulo1.setBounds(50,20,100,20); rotulo2.setBounds(50,60,100,20);
texto1.setBounds(120,20,200,20); texto2.setBounds(120,60,200,20);
exibir.setBounds(50,120,200,20); somar.setBounds(150,100,80,20);

somar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
int numero1,numero2,soma;
soma=0;
numero1 = Integer.parseInt(texto1.getText());
numero2 = Integer.parseInt(texto2.getText());
soma = numero1 + numero2;
exibir.setVisible(true);
exibir.setText("A soma é: "+soma);
}
}
);
exibir.setVisible(false);

tela.add(rotulo1); tela.add(rotulo2);
tela.add(texto1); tela.add(texto2);
tela.add(exibir); tela.add(somar);

setSize(400, 250);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

setVisible(true);
}
public static void main(String args[]){
Soma app = new Soma();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A habilitação do botão já foi explicado no aplicativo anterior, o que foi


acrescentado nesse aplicativo, foram os comandos que trabalham com
conversão de números.

Foram declaradas três variáveis do tipo inteira: int numero1, numero2, soma;
Foi atribuído zero a variável soma, para a variável ser iniciada vazia: soma=0;
Como texto1, texto2 são String, melhor dizer texto para armazená-las nas
variáveis numero1 e numero2, será necessário converte a String em números.

Nesse caso estamos convertendo o texto1 em inteiro para isso usamos o


Integer.parseInt(), e armazenamos na variável numero1 que é inteira.
Isso ocorrerá para a texto2 e a variável numero2.

numero1 = Integer.parseInt(texto1.getText());
numero2 = Integer.parseInt(texto2.getText());

Depois de convertido os valores agora é só fazer a soma e armazenar na


variável correspondente a soma, veja: soma = numero1 + numero2;

Chamamos o comando para habilitar o JLabel exibir e jogamos o valor de soma


dentro do texto do Jlabel exibir para se apresentado no aplicativo.

exibir.setVisible(true);
exibir.setText("A soma é: "+soma);

Para variáveis do tipo Float, usaremos: Float.parseFloat();


Para variáveis do Double, usaremos Doublé.parseDouble();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

10.4 – Clicando no botão limpar e as caixas de texto serão limpas


Depois de usadas nada como limpar suas caixas de texto, esta ai o exemplo
que irá ajudá-lo(a).
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Limpar extends JFrame{
JLabel rotulo1, rotulo2;
JTextField texto1,texto2;
JButton limpar;
public Limpar(){
super("Exemplo Limpar");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("1º Número: ");
rotulo2 = new JLabel("2º Número: ");
texto1 = new JTextField(5);
texto2 = new JTextField(5);
limpar = new JButton("Limpar");
rotulo1.setBounds(50,20,100,20);
rotulo2.setBounds(50,60,100,20);
texto1.setBounds(120,20,200,20);
texto2.setBounds(120,60,200,20);
limpar.setBounds(150,100,80,20);
limpar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
texto1.setText(null);
texto2.setText(null);
texto1.requestFocus();
}
}
);
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(texto1);
tela.add(texto2);
tela.add(limpar);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
Limpar app = new Limpar();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Nada de diferente no aplicativo somente as linhas que vão limpar as caixas de


texto e passar o foco para a primeira caixa vejam:

texto1.setText(null); ou texto1.setText(“”);
texto2.setText(null); ou texto2.setText(“”);
texto1.requestFocus();

É atribuído null dentro das caixas, pois nulo significa vazio e requestFocus()
passa o foco para a caixa selecionada pelo usuário.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

10.5 – Ocultar e Exibir componentes

Esse aplicativo é só para teste não tem muito que ser explicado, pois a única
coisa diferente é que quando você clica em ocultar os JLabels some e você
clica em exibir os JLabels aparecem novamente na janela.
Isso ocorre por que o comando setVisible(false), oculta e o comando
setVisible(true), exibe mostra na janela. Veja o exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class OcultarExibir extends JFrame{
JLabel rotulo1, rotulo2;
JButton ocultar,exbir;
public OcultarExibir(){
super("Exemplo de ocultar e exibir componente");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("Rótulo 1"); rotulo2 = new JLabel("Rótulo 2");
ocultar = new JButton("Ocultar "); exbir = new JButton("Exibir ");
rotulo1.setBounds(50,20,100,20); rotulo2.setBounds(50,60,100,20);
ocultar.setBounds(100,100,80,20); exbir.setBounds(250,100,80,20);
ocultar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setVisible(false);
rotulo2.setVisible(false);
}
}
);

exbir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setVisible(true);
rotulo2.setVisible(true);
}
}
);

tela.add(rotulo1); tela.add(rotulo2);
tela.add(ocultar); tela.add(exbir);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
OcultarExibir app = new OcultarExibir();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

10.6 – Desabilitar e Habilitar Exibir componentes

Nada de diferente também somente o comando setEnabled(true) que habilita


e o setEnabled(false) eu desabilita. Veja o exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DesabilitarHabilitar extends JFrame{
JLabel rotulo1, rotulo2;
JButton desabilitar,habilitar;
public DesabilitarHabilitar(){
super("Exemplo de Desabilitar e Habilitar componentes");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("Rótulo 1"); rotulo2 = new JLabel("Rótulo 2");
desabilitar = new JButton("Desabilitar"); habilitar = new JButton("Habilitar");
rotulo1.setBounds(50,20,100,20); rotulo2.setBounds(50,60,100,20);
desabilitar.setBounds(80,100,100,20); habilitar.setBounds(250,100,100,20);

desabilitar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setEnabled(false);
rotulo2.setEnabled(false);
}
}
);

habilitar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setEnabled(true);
rotulo2.setEnabled(true);
}
}
);
tela.add(rotulo1); tela.add(rotulo2);
tela.add(desabilitar); tela.add(habilitar);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
DesabilitarHabilitar app = new DesabilitarHabilitar();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

11 – Apresentando a classe JList


A classe JList permite a criação do componente conhecido como caixa de
listagem ou ListBox (nome popular entre programadores delphi e VB). Uma
caixa de listagem é um controle visual que exibe uma série de itens dos quais o
usuário pode selecionar um ou mais itens.
A maneira mais usual de criar um caixa de listagem em Java é usar um vetor
de Strings para definirmos os itens que serão exibidos na lista. O aplicativo
seguinte apresenta uma janela que contém uma caixa de listagem e um botão.
O usuário pode selecionar uma entre oito cidades. Ao clicar no botão exibir, o
valor selecionado será exibido em um JLabel.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJList extends JFrame{
JList lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo",
"Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
JLabel rotulo;
public ExemploJList(){
super("Exemplo de List");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
rotulo = new JLabel("");
lista = new JList(cidades);
lista.setVisibleRowCount(5);
JScrollPane painelRolagem = new JScrollPane(lista);
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
painelRolagem.setBounds(40,50,150,100);
exibir.setBounds(270,50,100,30);
rotulo.setBounds(50,150,200,30);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedValue().toString());
} } );
tela.add(painelRolagem);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJList app = new ExemploJList();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Experimente selecionar um dos itens da lista e clicar no botão Exibir. Observe


que o texto do item selecionado é exibido em uma caixa de mensagem. Vamos
analisar o código e ver como isso foi possível.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

O primeiro passo é declarar uma instância da classe JList chamada lista:


JList lista;
Em seguida declaramos e inicializamos um vetor de objetos String que contém
os itens que estarão disponíveis na list:
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Esprito
Santo", "Bahia","Pernambuco","Rio Grande do Sul","Acre"};
Os itens do vetor cidades são atribuídos à caixa de listagem por meio da
seguinte instrução:
lista = new JList(cidades);
É importante observar que o vinculo entre a caixa de listagem e o vetor cidades
não termina após essa instrução. Mais tarde, se alguma alteração for feita nos
elementos do vetor, você poderá atualizar a lista com uma chamada ao método
repaint da classe JComponent.
lista.rapaint();
Após a atribuição dos itens do vetor cidades à lista, temos que definir a
quantidade de elementos que serão visíveis sem a necessidade de acionar as
barras de rolagem isso é feito na linha:
lista.setVisibleRowCount(5);
Como queremos que o usuário seja capaz de selecionar apenas um item por
vez efetuaremos uma chamada ao método setSelectionMode e usaremos
uma das constantes da classe ListSelectionModel para definir a lista como
sendo de seleção única:
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Uma lista não fornece barras de rolagem por padrão. Dessa forma, uma
instância da classe JScrollPane é usada para essa finalidade:
JScrollPane painelRolagem = new JScrollPane(lista);
Quando clicamos no botão exibir, o método actionPerformed da classe publica.
Chamado:

exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText(“o estado é: “+lista.getSelectedValue().toString());
} } );

Nós efetuamos uma chamada ao método getSelectedValue().toString()); da


classe JList para obter o valor inteiro correspondente ao item selecionados.
Esse valor inicia em 0 e vai até a quantidade de itens menos 1. Obtido o valor,
só precisamos fornece-lo como índice para o valor o vetor cidades exibir o
resultado final na caixa de listagem.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

11.1 – Selecionando múltiplos itens em uma caixa de listagem

No tópico anterior escrevemos um aplicativo que permita selecionar um item


em uma caixa de listagem e exibir seu valor e, um JLabel. No exemplo apenas
um dos itens podia ser selecionado. É possível, porém, selecionar mais de um
item em uma caixa de listagem. Tudo que temos a fazer é alterar o valor da
constante fornecida para o método setSelectionMode. Veja os valores
possíveis:
Valor da Constante Resultado
SINGLE_SELECTION Apenas um item pode ser selecionado de
cada vez.
SINGLE_INTERVAL_SELECTION Vários itens em um intervalo contíguo podem
ser selecionados.
MULTIPLE_INTERVAL_SELECTION Vários podem ser selecionados sem a
restrição de intervalo.

O exemplo seguinte é uma pequena modificação do exemplo anterior que


mostra como vários itens podem ser selecionados e como você pode atribuí-los
a um vetor de objetos de modo a manipulá-los mais tarde:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJList2 extends JFrame{
JList lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo",
"Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
public ExemploJList2(){
super("Exemplo de List");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
lista = new JList(cidades);
lista.setVisibleRowCount(5);
JScrollPane painelRolagem = new JScrollPane(lista);
lista.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
painelRolagem.setBounds(40,50,150,100);
exibir.setBounds(270,50,100,30);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
Object selecionados[] = lista.getSelectedValues();
String resultados = "Valores selecionados:\n";
for(int i=0;i<selecionados.length;i++)
resultados += selecionados[i].toString()+"\n";
JOptionPane.showMessageDialog(null,resultados);
} } );
tela.add(painelRolagem);
tela.add(exibir);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJList2 app = new ExemploJList2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Execute o código e experimente selecionar mais de um item na caixa de


listagem. Lembre-se de que mais de um item pode ser selecionados mantendo
a tecla Crtl pressionada enquanto clicamos nos outros itens. Clique no botão
exibir, e você verá a caixa de mensagem exibindo os valores dos itens
selecionados.

Este exemplo apresenta poucas modificações. A primeira delas é a


modificação do valor fornecido para o método setSelectionMode:

lista.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

Veja que agora a lista permite que vários itens sejam selecionados. A outra
modificação aconteceu no evento do botão exibir:

exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
Object selecionados[] = lista.getSelectedValues();
String resultados = "Valores selecionados:\n";
for(int i=0;i<selecionados.length;i++)
resultados += selecionados[i].toString()+"\n";
JOptionPane.showMessageDialog(null,resultados);
} } );

A classe JList possui um método chamado getSelectedValues que retorna um


vetor de objetos da classe Object. Este valor contém todos os itens
selecionados na caixa de listagem. Assim, a linha:

Object selecionados[ ] = lista.getSelectedValues();

Quando foi adicionado \n no final da frase Valores selecionados, que como


visto \n pula uma linha na próxima palavra que será exibida e não ao lado.

Criar um vetor chamado selecionados e atribui a ele os itens retornados pelo


método getSelectedValues. Mantenha em mente que temos um vetor objetos
da classe Object. Esquecer-se deste detalhe pode ser desastroso. O laço for
interage com cada um dos elementos do vetor selecionados, efetuando
chamadas ao método String de cada um e concatenando o resultado obtido
com o valor da variável resultados.

Cada vez que selecionados jogar um item dentro de resultado, cada item cada
item vai com a opção de pular uma linha por isso os itens são exibidos um em
baixo do outro.

A caixa de mensagem JOptionPane será estuda mais profundamente nos


próximos capítulos da apostila. A opção showMessageDialog, que dizer uma
mensagem de dialogo será exibida ao usuário.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

11.2 – Trocando a cor da letra do JList


É possível trocar a cor da letra do componente JList abaixo do comando onde
você define em qual linha e coluna vai ficar o componente você pode digitar
essa linha: lista.setForeground(Color.blue);
11.3 – Trocando a cor de fundo do JList
lista.setBackground(Color.yellow);

11.4 – Trocando tipo, estilo e tamanho da fonte do Jlist


lista.setFont(new Font("Times New Roman",Font.BOLD,16));

Execute o aplicativo ExemploJList3.java que você poderá conferir onde aplicar


os comandos para as alterações citadas acima.

12 – uso da classe JComboBox na criação de caixas de combinação

Objetos da classe JComboBox são usados para a criação de controles


conhecidos como caixas de combinação, combo box ou lista drop-down. A
diferença entre a caixa de listagem e caixa de combinação é que esta última
exibe seus itens somente quando clicamos na seta (indicativo visual de que o
controle possui itens entre os quais podemos escolher) ou pressionando F4
quando o foco está no componente. Além, disso, caixas de combinação são
usadas quando o espaço é insuficiente para acomodar uma caixa de listagem.

A classe JcomboBox herda de JComponent, como mostra o relacionamento


seguinte:

Component

List Button Container Label CheckBox

Window
J Component
Frame

JComboBox

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

O aplicativo seguinte apresenta uma janela que contém uma caixa de


combinação e um botão. Quando selecionamos um item no JComboBox e
pressionamos o botão, Exibir o valor do item selecionado é exibido em uma
caixa de mensagem. Eis a listagem para o exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJComboBox extends JFrame{
JComboBox lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito
Santo","Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
JLabel rotulo;
public ExemploJComboBox(){
super("Exemplo de JComboBox");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
rotulo = new JLabel("");
lista = new JComboBox(cidades);
lista.setMaximumRowCount(5);
lista.setBounds(50,50,150,30);
exibir.setBounds(270,50,100,30);
rotulo.setBounds(50,150,200,30);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedItem().toString()); } } );
tela.add(lista);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJComboBox app = new ExemploJComboBox();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Existem muitas similaridades na maneira de manipular as classes JList e


JComboBox. Durante a análise você perceberá que muitas das técnicas que

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

usamos anteriormente podem ser aplicadas quando estiver lidando com caixas
de combinação. O primeiro passo foi declarar um objeto da classe JComboBox:

JComboBox Lista;

Em seguida temos um vetor de nomes de cidades que será usado para


definimos os itens da caixa de combinação:

String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito


Santo","Bahia","Pernambuco","Rio Grande do Sul","Acre"};

Temos um vetor de oito elementos que são atribuídos à caixa de combinação


com a seguinte instrução:

lista = new JComboBox(cidades);

Um objeto da classe JComboBox já possui barras de rolagem. Tiramos proveito


desse fator efetuamos uma chamada ao metido setMaximumRowCount para
definir a quantidade e itens visíveis na lista sem a necessidade de acionar as
barras de rolagem:

lista.setMaximumRowCount(5);

O processo usado para exibir o item selecionado é o mesmo que usamos para
as caixas de listagem.

exibir.addActionListener(
new ActionListener(){public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: “+lista.getSelectedItem().toString());
}});
tela.add(lista);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}

12.1 – Como criar uma caixa de combinação editável

Se você experimentou com o exemplo anterior deve ter percebido que a caixa
de combinação é somente leitura, ou seja, estamos limitados aos itens
disponíveis para a escolha.

Existe, porém, uma forma de permitir que o usuário digite o valor desejado em
uma caixa de combinação. Basta efetuar uma chamada ao método setEditable
fornecendo o valor true como argumento:

lista.setEditable(true);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJComboBox2 extends JFrame{
JComboBox lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito
Santo","Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
JLabel rotulo;
public ExemploJComboBox2(){
super("Exemplo de JComboBox");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
rotulo = new JLabel("");
lista = new JComboBox(cidades);
lista.setEditable(true);
lista.setMaximumRowCount(5);
lista.setBounds(50,50,150,30);
exibir.setBounds(270,50,100,30);
rotulo.setBounds(50,150,200,30);
exibir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedItem().toString());
}});
tela.add(lista);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJComboBox2 app = new ExemploJComboBox2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} }
Agora o usuário será capaz de escolher um dos itens disponíveis ou digitar sua
escolha. É comum em campos editáveis o pressionamento da tecla enter após
a entrada da informação no campo. Desse forma, é importante efetuar uma
chamada ao método addActionListener da caixa de combinação e definir o
procedimento a ser efetuado. O trecho do código seguinte mostra como exibir o
valor que o usuário acaba de informar:

exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedItem().toString());
}
}
);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

13. Entendimento e uso da classe JCheckBox

A classe JCheckBox é usada quando precisamos de controles como


caixas de seleção que podem ser marcados ou desmarcados pelo usuário e
oferecem feedback visual de modo percebemos seu estado atual. O uso de
caixas de seleção é freqüente em ambientes em que o usuário deve selecionar
uma ou mais das opções oferecidas.
O aplicativo seguinte apresenta uma janela com quatro caixas de
seleção e um botão. Marque uma das opções e pressione o botão. Uma
mensagem exibe o texto das caixas selecionadas. Veja a listagem:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJCheckBox extends JFrame{
JCheckBox primeira,segunda,terceira,quarta,quinta;
JLabel vazio;
public ExemploJCheckBox(){
super("Exemplo de um JCheckBox");
Container tela = getContentPane();
tela.setLayout(null);
JLabel rotulo = new JLabel("Quais suas linguagens favoritas? ");
rotulo.setBounds(40,30,200,20);
primeira = new JCheckBox("Java");
primeira.setMnemonic(KeyEvent.VK_J);
primeira.setBounds(40,60,60,20);
segunda = new JCheckBox("C++");
segunda.setMnemonic(KeyEvent.VK_C);
segunda.setBounds(100,60,60,20);
terceira = new JCheckBox("Delphi");
terceira.setMnemonic(KeyEvent.VK_D);
terceira.setBounds(160,60,60,20);
quarta = new JCheckBox("Visual Basic");
quarta.setMnemonic(KeyEvent.VK_V);
quarta.setBounds(230,60,100,20);
quinta = new JCheckBox("Python");
quinta.setMnemonic(KeyEvent.VK_P);
quinta.setBounds(335,60,70,20);
JButton botao = new JButton("Exibir");
botao.setBounds(200,150,100,20);
vazio = new JLabel("");
vazio.setBounds(100,200,600,20);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String escolhas = "";
if (primeira.isSelected() ==true)
escolhas = escolhas + primeira.getText();
if (segunda.isSelected() ==true)
escolhas = escolhas +" "+segunda.getText();
if (terceira.isSelected() ==true)
escolhas = escolhas +" "+terceira.getText();
if (quarta.isSelected() ==true)
escolhas = escolhas +" "+quarta.getText();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

if (quinta.isSelected() ==true)
escolhas = escolhas+" "+quinta.getText();
vazio.setText("Você escolheu: "+escolhas);}});
tela.add(rotulo);
tela.add(primeira);
tela.add(segunda);
tela.add(terceira);
tela.add(quarta);
tela.add(quinta);
tela.add(botao);
tela.add(vazio);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploJCheckBox app = new ExemploJCheckBox();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Durante a análise do código veremos como isso foi possível. Por ora, execute o
aplicativo, selecione as opções desejadas e clique no botão. Veja se o
resultado confere com sua escolha.

O primeira passo para a construção deste exemplo foi declarar as referências


global das instâncias da classe JCheckBox:

JCheckBox primeira,segunda,terceira,quarta,quinta;
Mais adiante você entenderá por que essa variável precisa ser global. Em
seguida temos a criação de cinco caixas de seleção. Veja o código para a
primeira:
primeira = new JCheckBox("Java");
segunda = new JCheckBox("C++");
terceira = new JCheckBox("Delphi");
quarta = new JCheckBox("Visual Basic");
quinta = new JCheckBox("Python");

Observe que a forma de criar objetos da classe JCheckBox é semelhante a


criar objetos das classes JButton E JLabel.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Próximo passar atribuir às caixas de seleção suas teclas de atalho:


primeira.setMnemonic(KeyEvent.VK_J);
segunda.setMnemonic(KeyEvent.VK_C);
terceira.setMnemonic(KeyEvent.VK_D);
quarta.setMnemonic(KeyEvent.VK_V);
quinta.setMnemonic(KeyEvent.VK_P);

A tecla de atalho para o controle é definida com uma chamada ao método


setMnemonic.

Próximo passo posicionar as caixas de seleção no formulário, chamada ao


método setBounds, já visto anteriormente:
primeira.setBounds(40,60,60,20);
segunda.setBounds(100,60,60,20);
terceira.setBounds(160,60,60,20);
quarta.setBounds(230,60,100,20);
quinta.setBounds(335,60,70,20);

Para adicionar as cinco caixas de seleção à janela, fizemos o uso de tela.add,


já visto anteriormente: tela.add(primeira); tela.add(segunda); tela.add(terceira);
tela.add(quarta); tela.add(quinta);

O rótulo vazio e o botão de exibir já foram visto em exercícios anteriores.


Quando você clicar no botão o conteúdo que você selecionou vai aparecer no
rótulo vazio.

Vamos entender agora o botão exibir:

botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String escolhas = "";
if (primeira.isSelected() ==true)
escolhas = escolhas + primeira.getText();
if (segunda.isSelected() ==true)
escolhas = escolhas +" "+segunda.getText();
if (terceira.isSelected() ==true)
escolhas = escolhas +" "+terceira.getText();
if (quarta.isSelected() ==true)
escolhas = escolhas +" "+quarta.getText();
if (quinta.isSelected() ==true)
escolhas = escolhas+" "+quinta.getText();
vazio.setText("Você escolheu: "+escolhas);}});

Na primeira linha desse método criamos uma variável chamada escolhas do


tipo String e definimos se conteúdo inicial como vazio. Em seguida temos um
laço IF, toda vez que você clicar no botão exibir ele fará a verificação e se a
caixa de seleção for marcada o método isSelected() testa o retorno se valor
for verdadeira, o aplicativo armazenará o conteúdo na variável escolhas.
Toda vez que você marca uma caixa de seleção o método setSelected()
recebe o valor true (verdadeiro), e quando você desmarca a caixa de seleção o
valor do método setSelected(), recebe o valor de false (falso).

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

13.1 – Iniciar um formulário com uma caixa de seleção marcada.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJCheckBox2 extends JFrame{
JCheckBox primeira,segunda,terceira,quarta,quinta;
public ExemploJCheckBox2(){
super("Exemplo de um JCheckBox");
Container tela = getContentPane();
tela.setLayout(null);
primeira = new JCheckBox("Java");
segunda = new JCheckBox("C++");
terceira = new JCheckBox("Delphi");
quarta = new JCheckBox("Visual Basic");
quinta = new JCheckBox("Python");
primeira.setMnemonic(KeyEvent.VK_J);
segunda.setMnemonic(KeyEvent.VK_C);
terceira.setMnemonic(KeyEvent.VK_D);
quarta.setMnemonic(KeyEvent.VK_V);
quinta.setMnemonic(KeyEvent.VK_P);
primeira.setBounds(40,60,60,20);
segunda.setBounds(100,60,60,20);
terceira.setBounds(160,60,60,20);
quarta.setBounds(230,60,100,20);
quinta.setBounds(335,60,70,20);
primeira.setSelected(true);
tela.add(primeira);
tela.add(segunda);
tela.add(terceira);
tela.add(quarta);
tela.add(quinta);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploJCheckBox2 app = new ExemploJCheckBox2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Utilize o método setSelected(true) para a caixa de seleção desejada:
primeira.setSelected(true);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

13.2 – Alterando a cor da letra de um JCheckBox

Exemplo disponível no aplicativo ExemploJCheckBox1

primeira.setForeground(Color.blue);
segunda.setForeground(Color.red);
terceira.setForeground(Color.green);
quarta.setForeground(Color.yellow);
quinta.setForeground(Color.white);

14 – Uso da Classe JRadioButton para criar botões de opção

As caixas de seleção fornecem uma maneira conveniente de oferecer ao


usuário alguns itens dos quais ele pode escolher um, vários ou todos. Existem,
no entanto, situações em que apenas um dos itens pode ser selecionado. Para
esses casos temos os botões de opção. Botões de opção têm seu uso
justificado em casos em que apenas uma das opções pode ser selecionada.
Essa funcionalidade só é atingida quando usamos objeto da classe
ButtonGroup para agrupar os itens de modo, que sempre que um item dor
selecionado, os demais sejam automaticamente desmarcados.
O aplicativo seguinte apresenta uma janela com cinco botões de opção.
Quando você clicar em exibir uma mensagem exibirá o valor selecionado e
quando você clicar em outra opção a anterior será desmarcada.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploRadioButton extends JFrame{
JRadioButton primeira,segunda,terceira,quarta,quinta;
JLabel rotulo,rotulo2;
JButton exibir;
ButtonGroup grupo;
public ExemploRadioButton(){
super("Exemplo de um JRadioButton");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("Escolha uma cidade: ");
rotulo.setBounds(50,20,200,20);
rotulo2 = new JLabel("");
rotulo2.setBounds(150,240,400,20);
exibir = new JButton ("Exibir");
exibir.setBounds(200,200,120,20);
primeira = new JRadioButton("Rio de Janeiro");
segunda = new JRadioButton("São Paulo");
terceira = new JRadioButton("Minas Gerais");
quarta = new JRadioButton("Amazonas");
quinta = new JRadioButton("Rio Grande do Sul");
primeira.setBounds(50,50,120,20);
segunda.setBounds(50,80,120,20);
terceira.setBounds(50,110,120,20);
quarta.setBounds(50,140,120,20);
quinta.setBounds(50,170,200,20);
primeira.setMnemonic(KeyEvent.VK_J);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

segunda.setMnemonic(KeyEvent.VK_C);
terceira.setMnemonic(KeyEvent.VK_D);
quarta.setMnemonic(KeyEvent.VK_V);
quinta.setMnemonic(KeyEvent.VK_P);
public class ExemploRadioButton extends JFrame{
JRadioButton primeira,segunda,terceira,quarta,quinta;
JLabel rotulo,rotulo2;
JButton exibir;
ButtonGroup grupo;
grupo.add(primeira);
grupo.add(segunda);
grupo.add(terceira);
grupo.add(quarta);
grupo.add(quinta);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if (primeira.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+primeira.getText());
if (segunda.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+segunda.getText());
if (terceira.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+terceira.getText());
if (quarta.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+quarta.getText());
if (quinta.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+quinta.getText());}});
tela.add(rotulo);
tela.add(primeira);
tela.add(segunda);
tela.add(terceira);
tela.add(quarta);
tela.add(quinta);
tela.add(exibir);
tela.add(rotulo2);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploRadioButton app = new ExemploRadioButton();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Explicando o aplicativo:

Para o exemplo criamos os botões de seleção e definimos suas teclas de


atalho.
primeira.setMnemonic(KeyEvent.VK_J);
segunda.setMnemonic(KeyEvent.VK_C);
terceira.setMnemonic(KeyEvent.VK_D);
quarta.setMnemonic(KeyEvent.VK_V);
quinta.setMnemonic(KeyEvent.VK_P);

Primeiro declaramos o grupo na área pública veja:


public class ExemploRadioButton extends JFrame{
ButtonGroup grupo;

Botões de opção são agrupados usando uma instância da classe ButtonGroup:


ButtonGroup grupo;

Para adicionar um botão ao grupo, basta efetuar uma chamada ao metodo add
da classe ButtonGroup. Veja:
grupo.add(primeira);
grupo.add(segunda);
grupo.add(terceira);
grupo.add(quarta);
grupo.add(quinta);
É preciso, porém manter em mente que a classe ButtonGroup não é um
contêiner para objetos. Essa classe serve apenas ao propósito de agrupar os
botões para que somente um possa ser selecionado por uma vez.
Se caso o usuário quiser colocar um botão padrão, aquele que já esteja
marcado quando iniciar a janela use: primeiro.setSelected(true);

Método: setSelected(true) – marca o botão


setSelected(false) – desmarca o botão

Método: isSelected(true) – verifica se o botão esta marcado


isSelected(false) – verifica se o botão esta desmarcado

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

15 – Fazendo um aplicativo com ComboBox CheckBox RadioButton

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploComboCheckRadio extends JFrame{
JLabel rotulo1, rotulo2, rotulo3,texto;
JCheckBox negrito,italico,normal,negritoitalico;
JRadioButton tam1,tam2,tam3,tam4;
ButtonGroup grupo;
String cor[] = {"Sem Cor", "Vermelho", "Azul",
"Verde","Amarelo","Branco","Preto"};
JComboBox lista;
Integer estilo, tamfonte;
public ExemploComboCheckRadio(){
super("Exemplo Combo Check Radio BOX");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("Cor");
rotulo2 = new JLabel("Estilo");
rotulo3 = new JLabel("Tamanho");
texto = new JLabel("Programa feito em Java");
lista = new JComboBox(cor);
lista.setMaximumRowCount(7);
negrito = new JCheckBox("Negrito");
italico = new JCheckBox("Italico");
normal = new JCheckBox("Normal");
negritoitalico = new JCheckBox("Negrito Itálico");
tam1 = new JRadioButton("12");
tam2 = new JRadioButton("14");
tam3 = new JRadioButton("16");
tam4 = new JRadioButton("18");
grupo = new ButtonGroup();
grupo.add(tam1);
grupo.add(tam2);
grupo.add(tam3);
grupo.add(tam4);
rotulo1.setBounds(40,20,70,20);
rotulo2.setBounds(200,20,70,20);
rotulo3.setBounds(300,20,70,20);
texto.setBounds(100,200,300,20);
lista.setBounds(40,50,150,20);
negrito.setBounds(200,50,100,20);
italico.setBounds(200,70,100,20);
normal.setBounds(200,90,100,20);
negritoitalico.setBounds(200,110,150,20);
tam1.setBounds(350,50,100,20);
tam2.setBounds(350,70,100,20);
tam3.setBounds(350,90,100,20);
tam4.setBounds(350,110,100,20);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tamfonte=12;
estilo=Font.PLAIN;
//coloca cor na fonte
lista.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
if (lista.getSelectedItem().toString() == "Sem Cor")
texto.setForeground(Color.black);
if (lista.getSelectedItem().toString() == "Vermelho")
texto.setForeground(Color.red);
if (lista.getSelectedItem().toString() == "Azul")
texto.setForeground(Color.blue);
if (lista.getSelectedItem().toString() == "Verde")
texto.setForeground(Color.green);
if (lista.getSelectedItem().toString() == "Amarelo")
texto.setForeground(Color.yellow);
if (lista.getSelectedItem().toString() == "Branco")
texto.setForeground(Color.white);
if (lista.getSelectedItem().toString() == "Preto")
texto.setForeground(Color.black);}});
//coloca a fonte tamnho 12
tam1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=12;
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte tamnho 14
tam2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=14;
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte tamnho 16
tam3.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=16;
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte tamnho 18
tam4.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=18;
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte em negrito
negrito.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.BOLD;
normal.setSelected(false);
italico.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte em italico
italico.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

estilo=Font.ITALIC;
normal.setSelected(false);
negrito.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte normal
normal.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.PLAIN;
negrito.setSelected(false);
italico.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte em negrito e italico
negritoitalico.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.BOLD+Font.ITALIC;
negrito.setSelected(false);
italico.setSelected(false);
normal.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3);
tela.add(texto);
tela.add(negrito); tela.add(italico);
tela.add(normal); tela.add(negritoitalico);
tela.add(tam1); tela.add(tam2);
tela.add(tam3);tela.add(tam4);
tela.add(lista);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true); }
public static void main(String args[]){
ExemploComboCheckRadio app = new ExemploComboCheckRadio();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}

Aplicativo sendo executado.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Vamos estudar o aplicativo:

1º Passo: declarar as variáveis e os tipos


JLabel rotulo1, rotulo2, rotulo3,texto;
JCheckBox negrito,italico,normal,negritoitalico;
JRadioButton tam1,tam2,tam3,tam4;
ButtonGroup grupo;
String cor[] = {"Sem Cor", "Vermelho", “Azul", "Verde"," Amarelo"," Branco"," Preto"};
JComboBox lista;
Integer estilo, tamfonte;

2º Passo: definir o conteúdo que serão exibidos na tela


Rótulos
rotulo1 = new JLabel("Cor"); rotulo2 = new JLabel("Estilo");
rotulo3 = new JLabel("Tamanho"); texto = new JLabel("Programa feito em Java");

ComboBox: lista = new JComboBox(cor);


Quantidade de linha no ComboBox: lista.setMaximumRowCount(7);

Estilo da fonte
negrito = new JCheckBox("Negrito");
italico = new JCheckBox("Itálico");
normal = new JCheckBox("Normal");
negritoitalico = new JCheckBox("Negrito Itálico");

Tamanho da Fonte:
tam1 = new JRadioButton("12");
tam2 = new JRadioButton("14");
tam3 = new JRadioButton("16");
tam4 = new JRadioButton("18");

3º Passo: adicionar o RadioButton em um grupo para que somente um seja


selecionado
grupo = new ButtonGroup();
grupo.add(tam1);
grupo.add(tam2);
grupo.add(tam3);
grupo.add(tam4);

4º Passo: definir o posicionamento das opções


rotulo1.setBounds(40,20,70,20); rotulo2.setBounds(200,20,70,20);
rotulo3.setBounds(300,20,70,20); texto.setBounds(100,200,300,20);
lista.setBounds(40,50,150,20); negrito.setBounds(200,50,100,20);
italico.setBounds(200,70,100,20); normal.setBounds(200,90,100,20);
negritoitalico.setBounds(200,110,150,20);
tam1.setBounds(350,50,100,20);tam2.setBounds(350,70,100,20);
tam3.setBounds(350,90,100,20);tam4.setBounds(350,110,100,20);

Todos os passos acima já foram visto em outros aplicativos.

5º Passo: atribuir valor as variáveis que vai guardar o tamanho e o estilo da


fonte.
tamfonte=12; estilo=Font.PLAIN;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

6º Passo: Funcionalidade do ComboBox – seleciona a cor da fonte


lista.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
if (lista.getSelectedItem().toString() == "Sem Cor")
texto.setForeground(Color.black);
if (lista.getSelectedItem().toString() == "Vermelho")
texto.setForeground(Color.red);
if (lista.getSelectedItem().toString() == "Azul")
texto.setForeground(Color.blue);
if (lista.getSelectedItem().toString() == "Verde")
texto.setForeground(Color.green);
if (lista.getSelectedItem().toString() == "Amarelo")
texto.setForeground(Color.yellow);
if (lista.getSelectedItem().toString() == "Branco")
texto.setForeground(Color.white);
if (lista.getSelectedItem().toString() == "Preto")
texto.setForeground(Color.black);}});
É feita a comparação com o comando IF, se o conteúdo da string do ComboBox for
igual a cor que você escolheu, então setForeground coloca a cor escolhida no rótulo
texto.

7º Passo: Trocar o tamanho da fonte


tam1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=12;
texto.setFont(new Font("",estilo,tamfonte));}});
tam2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=14;
texto.setFont(new Font("",estilo,tamfonte));}});
tam3.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=16;
texto.setFont(new Font("",estilo,tamfonte));}});
tam4.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=18;
texto.setFont(new Font("",estilo,tamfonte));}});
Quando você clicar no tamanho desejado, a variável tamfonte recebe o tamanho
escolhido, e modifica o tamanho do rótulo texto, o valor da variável tamfonte só será
modificado se você alterar e escolher outro tamanho, por isso a variável tamfonte é
declarada pública uma vez colocado valor nela, todos os métodos que tiver utilizando
essa variável faz referência ao valor dela.

8º Passo: Escolher o estilo da fonte


Coloca a fonte em negrito
negrito.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.BOLD;
normal.setSelected(false);
italico.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Quando você selecionar o CheckBox do negrito, ele atribui o estilo negrito (BOLD) a
variável estilo, desmaca o CheckBox do normal, itálico e do negrito itálico, e exibir na
tela o rótulo texto com a fonte negrito.

Coloca a fonte em itálico


italico.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.ITALIC;
normal.setSelected(false);
negrito.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});

Quando você selecionar o CheckBox do itálico, ele atribui o estilo itálico (ITALIC) a
variável estilo, desmaca o CheckBox do normal, negrito e do negrito itálico, e exibir na
tela o rótulo texto com a fonte em itálico.

Coloca a fonte normal


normal.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.PLAIN;
negrito.setSelected(false);
italico.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
Quando você selecionar o CheckBox do normal, ele atribui o estilo normal (PLAIN) a
variável estilo, desmaca o CheckBox do negrito, itálico e do negrito itálico, e exibir na
tela o rótulo texto com a fonte com estilo normal sem efeito.

Coloca a fonte em negrito e itálico


negritoitalico.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.BOLD+Font.ITALIC;
negrito.setSelected(false);
italico.setSelected(false);
normal.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
Quando você selecionar o CheckBox do negrito itálico, ele atribui o estilo negrito e
itálico (Font.BOLD+Font.ITALIC) a variável estilo, desmaca o CheckBox do negrito,
itálico e do normal, e exibir na tela o rótulo texto com a fonte com estilo negrito e
itálico.

A variável estilo é pública por isso quando você atribui valor nela, todos os métodos
que for utilizá-la exibirá no rótulo o estilo da variável estilo.

9º Passo: utiliza o método tela.add() para adicionar os métodos ao


aplicativo.
tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3);
tela.add(texto);
tela.add(negrito); tela.add(italico);
tela.add(normal); tela.add(negritoitalico);
tela.add(tam1); tela.add(tam2);
tela.add(tam3);tela.add(tam4);
tela.add(lista);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

16 – Como adicionar dica aos seus botões

O processo de adicionar dicas aos botões é sempre uma boa idéia


definir as dicas de ferramentas para que o usuário, ao posicionar o ponteiro do
mouse sobre o controle (Botão), possa ter mais informações sobre a
funcionalidade das ferramentas do aplicativo.
Veja na listagem abaixo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotoesDicas extends JFrame{
JButton botao1,botao2;
public ExemploBotoesDicas(){
super("Exemplo de Botões com Dica");
Container tela = getContentPane();
tela.setLayout(null);
botao1 = new JButton("Olá");
botao2 = new JButton("Sair");
botao1.setBounds(100,50,100,20);
botao2.setBounds(100,100,100,20);
botao1.setToolTipText("Botão usado para abrir algo");
botao2.setToolTipText("Botão que será usado para sair");
tela.add(botao1);
tela.add(botao2);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploBotoesDicas app = new ExemploBotoesDicas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A dica de ferramenta para os botões foi definida nas linhas:


botao1.setToolTipText("Botão usado para abrir algo");
botao2.setToolTipText("Botão que será usado para sair");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

16.1 – Adicionar cores diferentes as dicas

Se você observou atentamente a dica de ferramenta do exemplo


anterior, deve ter percebido que o Java define o azul como cor de fundo e o
texto na cor preta. É possível acessar e manipular algumas das propriedades
das dicas de ferramenta de modo a adequá-las às cores propostas em seus
aplicativos. É uma técnica raramente usada, mas que surte efeitos bem
interessantes.

As dicas de ferramenta do Windows tem o amarelo como cor de fundo.


Veja como é possível atingir esse efeito em um aplicativo Java:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotoesDicas2 extends JFrame{
JButton botao1,botao2;
public ExemploBotoesDicas2(){
super("Exemplo de Botões com Dica");
Container tela = getContentPane();
tela.setLayout(null);
botao1 = new JButton("Olá");
botao2 = new JButton("Sair");
botao1.setBounds(100,50,100,20);
botao2.setBounds(100,100,100,20);
botao1.setToolTipText("Botão usado para abrir algo");
botao2.setToolTipText("Botão que será usado para sair");
UIManager.put("ToolTip.background",SystemColor.info);
tela.add(botao1);
tela.add(botao2);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploBotoesDicas2 app = new ExemploBotoesDicas2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

E para alterar a cor da letra da dica, basta você digitar:

UIManager.put("ToolTip.foreground",Color.blue);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

17 – Tipos de diálogos fornecidos pela classe JOptionPane

Vamos usar constantemente a classe JOptionPane para exibir caixas de


mensagens mostrando resultados de operações. Nestes tópicos vamos estudar
os diferentes tipos de diálogos, assim como seus construtores mais
importantes.

Os diálogos de mensagens fornecidos pela classe JOptionPane são do tipo


modal, ou seja, quando o diálogo é exibido, tudo que estiver sendo executado
no aplicativo é suspenso até que a janela do diálogo seja fechada. Isso é
importante, uma vez que dependemos da resposta do usuário para continuar o
processamento normal do programa.

Os diálogos da classe JOptionPane podem ser exibidos com chamadas aos


seguintes métodos estáticos:

Método Uso
showConfirmDialog Usado para pedir confirmação, ou
seja, o usuário tem a opção de
responder “sim”, “não” ou “cancelar”.
showInputDialog Usado para obter entrada para o
programa.
showMessageDialog Usado para exibir mensagem sobre a
execução de alguma operação.

17.1 – Como entender os diálogos de confirmação

Diálogos de confirmação são usados para perguntar ao usuário se uma


determinada operação deve ser iniciada, continuada ou interrompida.
Aplicativos em Java geralmente usam esse tipo de diálogo para confirmar a
gravação de arquivos, fechamento de janelas, etc.

Exemplo:
JOptionPane.showConfirmDialog(null,”Fechar?”,”Fechar”,JOptionPane.YES_NO_OPTION);

Este método retorna um valor inteiro correspondente à opção escolhida pelo


usuário. Em diálogos de confirmação esse retorno pode ser um dos três
valores seguintes:

YES_OPTION – indica que o usuário escolheu a opção “Yes” ou “Sim”.

NO_OPTION – indica que o usuário escolheu a opção “No” ou “Não”.

CANCEL_OPTION – indica que o usuário escolheu a opção “Cancel” ou


“Cancelar”.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Os parâmetros para o método são:

JOptionPane.showConfirmDialog(parentComponent,”message”,”title”,optionType);

parentComponent – determina a janela na qual o diálogo será exibido.


Geralmente forncemos o valor null para esse parâmetro.

message – o texto a ser exibido no diálogo.

title – o texto para a barra de título do diálogo.

optionType – valor inteiro equivalente às opções disponíveis para o tipo de


diálogo, ou seja, YES_NO_OPTION, ou YES_NO_CANCEL_OPTION.

A listagem abaixo mostra como os diálogos de confirmação podem ser usados.


O Aplicativo pergunta se o usuário deseja realmente fechar a janela, caso você
clique no yes a janela será fecada, caso contrário o janela não será fechada.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoSair1 extends JFrame{
JButton botao;
public ExemploBotaoSair1(){
super("Exemplo de Botões com Diálogos de confirmação");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,50,100,20);
botao.setToolTipText("Botão que finaliza a janela");
tela.add(botao);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
int opcao;
opção=JOptionPane.showConfirmDialog(null,
"Deseja mesmo fechar a janela?",
"Fechar",JOptionPane.YES_NO_OPTION);
if (opcao==JOptionPane.YES_OPTION)
System.exit(0);
}});
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploBotaoSair1 app = new ExemploBotaoSair1();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Execute o aplicativo clique no botão sair e veja a mensagem do programa:

Se você clicar em Yes a janela será fechada e caso contrário ela continuará.
Passos para colocar o botão a janela e dicas de botões já foram vistos
anteriomente, e para chamar o caixa de confirmação basta você clicar no sair,
e o evento será executado, método para chamar o evento também já foi visto.

Veja o que tem de diferente:


botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
int opcao;
opcao=JOptionPane.showConfirmDialog(null,"Deseja
mesmo fechar a janela?","Fechar",
JOptionPane.YES_NO_OPTION);
if (opcao==JOptionPane.YES_OPTION)
System.exit(0); }});

Foi declarada uma variável do tipo inteira com o nome de opção. Essa variável
vai receber a resposta do JOptionPane, e vai armazenar o valor que será
escolhido na caixa de confirmação. E o comando IF, que vai fazer a
comparação se o conteúdo da variável opção for igual
JOptionPane.YES_OPTION, ele retorna a verdadeiro e chama o método
System.exite(0) e finaliza a janela.

17.2 – Traduzir os botões de diálogos

Seria interessante exibir os textos dos botões em português? A classe


JOptionPane fornece um método chamado showOptionDialog que permite
personalizar o texto dos botões de diálogos. Não tem muita diferença entre o
showConfirmDialog e showOptionDialog.
Vejamos a listagem:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploTraduzir extends JFrame{
JButton botao;
public ExemploTraduzir(){
super("Exemplo de Botões Traduzidos");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,50,100,20);
botao.setToolTipText("Botão que finaliza a janela");
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

int opcao;
Object[] botoes = {"Sim","Não"};
opcao = JOptionPane.showOptionDialog(null,
"Deseja mesmo fechar a janela?",
"Fechar",JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,botoes,botoes[0]);
if (opcao==JOptionPane.YES_OPTION)
System.exit(0); }});
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);}
public static void main(String args[]){
ExemploTraduzir app = new ExemploTraduzir();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

O que foi modificado e o que há de diferente?


Os botões de diálogos traduzidos foram criados em português como itens de um vetor.
O vetor com essas duas opções, só apareceram dois botões, caso você queira o
cancelar basta adcionar a lista do vetor = {“Sim”,”Não”,”Cancelar”}. Object [ ] botoes =
{"Sim","Não"};
Em seguida a variável opcao que é do tipo inteira receberá o resultado da chamada ao
método showOptionDialog: Variável inteira: int opcao;
Vetor com os botões traduzidos: Object[] botoes = {"Sim","Não"};
Variável opção que esta recebendo o resultado do showOptionDialog:
opcao=JOptionPane.showOptionDialog(
null, – determina a janela na qual o diálogo será exibido. Geralmente forncemos o
valor null para esse parâmetro.
"Deseja mesmo fechar a janela?", – o texto a ser exibido no diálogo.
"Fechar", – o texto para a barra de título do diálogo.
JOptionPane.YES_NO_OPTION, - valor inteiro equivalente às opções disponíveis
para o tipo de diálogo, ou seja, YES_NO_OPTION, ou YES_NO_CANCEL_OPTION.
JOptionPane.QUESTION_MESSAGE, determina o tipo da mensagem a ser exibida,
exemplo pergunta, erro, informação, etc.
null, - ícone a ser exibido no diálogo, ícone personalizado.
botoes,botoes[0]); - Um vetor de objetos, geralmente do tipo string, representando as
possiveis escolhas, ou seja, os botões para o diálogo.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

17.3 – Como obter dados por meio de diálogos do tipo prompt

Diálogos do tipo prompt são usados quando precisamos recebe entrada de


dados, geralmente fornecidos pelo usuário do aplicativo. A forma mais básica
de um diálogo do tipo prompt é obtida pelo método showInputDialog com a
seguinte sintaxe: showInputDialog(mensagem);
Quando o usuário digita o conteúdo solicitado e pressiona o botão OK, o
conteúdo da caixa é atribuído a variável nome. E o conteúdo dessa variável
será escrito dentro de um rótulo na janela. Se o botão cancel for acionado
acontecerá um erro no aplicativo. Como você pode perceber boa parte da caixa
de diálogo esta em inglês. Infelizmente não é possível traduzir esse diálogo
sem nos aventuramos em criar uma classe personalizada.
Veja a listagem:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploInputDialog extends JFrame{
JButton botao;
String nome;
JLabel rotulo;
public ExemploInputDialog(){
super("Exemplo de Input Dialog");
Container tela = getContentPane();
tela.setLayout(null);
nome = JOptionPane.showInputDialog("Entre com seu nome: ");
rotulo = new JLabel("");
botao = new JButton("Sair");
rotulo.setBounds(10,40,350,20);
botao.setBounds(100,90,100,20);
botao.setToolTipText("Botão que finaliza a janela");
rotulo.setText("O nome digitado foi: "+nome.toUpperCase());
tela.add(rotulo);
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int opcao;
Object[] botoes = {"Sim","Não"};
opcao = JOptionPane.showOptionDialog(null,"Deseja
mesmo fechar a janela?","Fechar",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,botoes,botoes[0]);
if (opcao==JOptionPane.YES_OPTION)
System.exit(0);
}});
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploInputDialog app = new ExemploInputDialog();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Caixa do InputDialog

Quando você clicar no Ok.


Veja o resultado, o nome vai aparecer todo em maiúsculo

17.4 – Como fornecer os valores a serem selecionados em um diálogo

O uso de diálogos prompt para obter entrada do usuário é muito conveniete,


mas há situações em que o usuário deve apenas selecionar um dos valores
fornecidos pelo aplicativo. Para essas situações você pode usar o seguinte
método da classe JOptionPane.

Veja a lista:
Import javax.swing.JOptionPane;
public class ExemploInputDialog1{
public static void main(String args[]){
Object linguagens [] = {"Java","Delphi","C++","Visual Basic"};
Object opcao = JOptionPane.showInputDialog(null,"Qual sua
linguagem favorita?","Enquete",
JOptionPane.QUESTION_MESSAGE,
null,linguagens,linguagens[0]);
JOptionPane.showMessageDialog(null,"Você escolheu: "+opcao);
System.exit(0);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

17.5 – Entendimento e uso do método showMessageDialog.

Como o leitor já conhece todos os parâmetros, nos determinamos apenas no


parâmetro messaType. É aqui que definimos o tipo de mensagem que será
exibido. Os valores possíveis são: ERROR_MESSAGE,
INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE,
PLAIN_MESSAGE. Cada um desses valores produz uma mensagem diferente,
como mostra o seguinte aplicativo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMessagens extends JFrame{
JButton erro, informacao, exclamacao, pergunta, nenhum;
public ExemploDeMessagens(){
super("Exemplo de mensagens");
Container tela = getContentPane();
tela.setLayout(null);
erro = new JButton("Erro");
informacao = new JButton("Informação");
exclamacao = new JButton("Exclamação");
pergunta = new JButton("Pergunta");
nenhum = new JButton("Nenhum");
erro.setBounds(30,20,100,20);
informacao.setBounds(30,50,100,20);
exclamacao.setBounds(30,80,150,20);
pergunta.setBounds(30,110,100,20);
nenhum.setBounds(30,140,100,20);
tela.add(erro);
tela.add(informacao);
tela.add(exclamacao);
tela.add(pergunta);
tela.add(nenhum);

erro.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){


JOptionPane.showMessageDialog(null,"Você escolheu erro","Mensagem de
Erro",JOptionPane.ERROR_MESSAGE,null);}})

informacao.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){


JOptionPane.showMessageDialog(null,"Você escolheu informação","Mensagem de
Informação",JOptionPane.INFORMATION_MESSAGE,null);}});

exclamacao.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){


JOptionPane.showMessageDialog(null,"Você escolheu exclamação","Mensagem de
Exclamação",JOptionPane.WARNING_MESSAGE,null);}});

pergunta.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){


JOptionPane.showMessageDialog(null,"Você escolheu pergunta","Mensagem de
Pergunta",JOptionPane.QUESTION_MESSAGE,null);}});

nenhum.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){


JOptionPane.showMessageDialog(null,"Você escolheu
nenhum","Mensagem",JOptionPane.PLAIN_MESSAGE,null);}});

setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploDeMessagens app = new ExemploDeMessagens();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Tela inicial do aplicativo

Quando você clicar no botão a mensagem correspondente vai aparecer.

Veja um trecho de código que produz a segunda mensagem:

JOptionPane.showMessageDialog(null,"Você escolheu pergunta","Mensagem


de Pergunta",JOptionPane.QUESTION_MESSAGE,null);}});

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

18 – Maiúsculas e Minúsculas

Nada como você entrar com os dados em minúsculos e obter sua saída em
maiúsculos, ou vice versa. Para colocar a saída em maiúsculo utilize o método:
toUpperCase(). Observe o aplicativo abaixo:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploMaiusculas extends JFrame{
JButton copiar,limpar;
JLabel rotulo1,rotulo2;
JTextField texto1,texto2;
public ExemploMaiusculas(){
super("Exemplo de saídas maiúsculas");
Container tela = getContentPane();
tela.setLayout(null);
rotulo1 = new JLabel("Nome: ");
rotulo2 = new JLabel("Nome: ");
texto1 = new JTextField(20);
texto2 = new JTextField(20);
copiar = new JButton("Copiar");
limpar = new JButton("Limpar");
rotulo1.setBounds(20,30,50,20);
rotulo2.setBounds(20,60,50,20);
texto1.setBounds(60,30,180,20);
texto2.setBounds(60,60,180,20);
copiar.setBounds(20,130,100,20);
limpar.setBounds(180,130,100,20);
copiar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto2.setText(texto1.getText().toUpperCase());}});
limpar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto1.setText("");
texto2.setText("");
texto1.requestFocus();}});
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(texto1);
tela.add(texto2);
tela.add(copiar);
tela.add(limpar);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null); }
public static void main(String args[]){
ExemploMaiusculas app = new ExemploMaiusculas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploMinusculas extends JFrame{
JButton copiar,limpar;
JLabel rotulo1,rotulo2;
JTextField texto1,texto2;
public ExemploMinusculas(){
super("Exemplo de saídas minúsculas");
Container tela = getContentPane();
tela.setLayout(null);
rotulo1 = new JLabel("Nome: ");
rotulo2 = new JLabel("Nome: ");
texto1 = new JTextField(20);
texto2 = new JTextField(20);
copiar = new JButton("Copiar");
limpar = new JButton("Limpar");
rotulo1.setBounds(20,30,50,20);
rotulo2.setBounds(20,60,50,20);
texto1.setBounds(60,30,180,20);
texto2.setBounds(60,60,180,20);
copiar.setBounds(20,130,100,20);
limpar.setBounds(180,130,100,20);
copiar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String texto;
texto = texto1.getText().toUpperCase();
texto1.setText(texto);
texto2.setText(texto1.getText().toLowerCase());}});
limpar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto1.setText("");
texto2.setText("");
texto1.requestFocus();}});
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(texto1);
tela.add(texto2);
tela.add(copiar);
tela.add(limpar);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);}
public static void main(String args[]){
ExemploMinusculas app = new ExemploMinusculas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);} }

Para colocar em minúsculos, basta você chamar o método toLowerCase(), se você


digitar a letra minúscula, quando você clicar em copiar, o texto da primeira caixa vai
ficar maiúsculas e a segunda fica minúsculas. E o botão limpar serve para limpar as
duas caixas e coloca o foco para a primeira caixa.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

19 – Adicionando Data nos seus aplicativos

O aplicativo abaixo mostra dos tipos de data, somente com números e a outra
com o dia da semana e os meses escritos com o nome.
Vamos ver o aplicativo:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Data extends JFrame{
JLabel rotulo,rotulo2;
int ds,dia,mes,ano;
Calendar data;
String diasemana[]={"Domingo","Segunda - Feira","Terça - Feira","Quarta - Feira",
"Quinta - Feira","Sexta - Feira","Sábado"};
String meses[]={"Janeiro","Fevereiro","Março","Abril","Maio","Junho",
"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"};
public Data(){
super("Exemplo de Data");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("");
rotulo2 = new JLabel("");
rotulo.setBounds(20,30,280,20);
rotulo2.setBounds(20,60,280,20);
data = Calendar.getInstance();
ds = data.get(Calendar.DAY_OF_WEEK);
dia = data.get(Calendar.DAY_OF_MONTH);
mes = data.get(Calendar.MONTH);
ano = data.get(Calendar.YEAR);
rotulo.setText("Data: "+ds+" "+dia+"/"+(mes+1)+"/"+ano);
rotulo2.setText("Data: "+diasemana[ds-1]+", "+dia+" de "+meses[mes]+" de "+ano);
tela.add(rotulo);
tela.add(rotulo2);
setSize(300, 200);
setVisible(true);
setLocationRelativeTo(null); }
public static void main(String args[]){
Data app = new Data();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

20 – Adicionando Horas ao seu aplicativo

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DecimalFormat;
import javax.swing.Timer;
public class Hora extends JFrame{
JLabel rotulo;
int hh,mm,ss,h;
Calendar hora;
DecimalFormat formato;
public Hora(){
super("Exemplo de Hora");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("");
rotulo.setBounds(20,30,280,20);
ActionListener tarefa = (new ActionListener(){
public void actionPerformed(ActionEvent e){
HORAS();
}
});
javax.swing.Timer time = new javax.swing.Timer(1000,tarefa);
time.start();
tela.add(rotulo);
setSize(300, 200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Hora app = new Hora();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void HORAS(){
hora = Calendar.getInstance();
hh = hora.get(Calendar.HOUR_OF_DAY);
mm = hora.get(Calendar.MINUTE);
ss = hora.get(Calendar.SECOND);
formato = new DecimalFormat("00");
rotulo.setText("Hora: "+formatar(hh%12)+":"+formatar(mm)+":"+formatar(ss));
}
private String formatar(int num){
formato = new DecimalFormat("00");
return formato.format(num);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Vamos criar uma classe privada com o nome de HORAS vamos definir os
parâmetros para hora, minutos e segundos.

Depois criar um outra classe privada com o nome de formatar para que você
possa formatar a hora com dois dígitos, e coloca a hora no rótulo com uma
string.

Criar uma ação com o nome de tarefa, que vai chamar a classe privada
HORAS.

Por último chamar a biblioteca com o nome de Timer, e atribuir o tempo de um


segundo que é representado por mil. E chamar o método time.start(), para que
o relógio possa movimentar os segundos.

Aplicativo bem interessante execute veja como funciona.

21 – Entendimento da classe JTextArea

A classe JTextField permite a criação de caixas de textos que aceitam a


entrada de apenas uma linha de texto. A classe JTextArea permite a entrada e
manipulação de múltiplas linhas de texto. Emobra a classe JTextArea forneça
uma série de métodos úteis para a manipulação de seu conteúdo, algumas
operações mais avançadas, tais como formatar e aplicar estilos diversos ao
texto de controle, são possíveis apenas com o uso da classes JTextPane e
JeditorPane. Esta apostila não aborda estas duas classes mas, você poderá
pesquisa-las na documentação Java.

A classe JTextArea fornece seis construtores. Dentre eles, o mais comumente


usado é aquele que cria uma área de texto em branco com um determinado
número de linhas e colunas. Veja a sintaxe para esse construtor:

JTextArea(int linhas, int colunas).

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

A listagem seguinte apresenta um aplicativo que contém um rótulo, uma área


de texto. Somente para o usuário visualizar como funciona o aplicativo:
import javax.swing.*;
import java.awt.*;
public class ExemploJTextArea extends JFrame{
JLabel rotulo;
JTextArea texto;
public ExemploJTextArea(){
super("Exemplo com JTextArea");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel ("Endereço");
texto = new JTextArea(20,30);
rotulo.setBounds(50,20,100,20);
texto.setBounds(50,50,250,250);
tela.add(rotulo);
tela.add(texto);
setSize(400, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextArea app = new ExemploJTextArea();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Este aplicativo apresenta poucas novidades. Começamos definindo uma


variável chamada texto que servirá para instanciarmos a área de texto:
JTextArea texto;

A área de texto é criada com a seguinte instrução:


texto = new JTextArea(20,30);

Nosso controle vai exibir 20 linhas de texto e 30 colunas. É importante observar


que esses valores definem apenas o conteúdo que será visível no controle e
não a quantidade de texto que poderá ser inserida.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

21.1 – Definição das barras de rolagem para os controles JTextArea

O aplicativo que digitamos no tópico anterior apresentou o uso da classe


JTextArea para construir áreas de texto que aceitem mais de uma linha de
conteúdo. O leitor deve ter percebido que, se a quantidade de texto exceder o
espaço reservado para o controle, parte de seu conteúdo não poderá ser
visualizado devido à ausência das barras de rolagens. A listagem seguinte é
uma pequena modificação do exemplo anterior que demostra como a classe
JScrollPane pode ser usada para adicionar barras de rolagem a objetos da
classe JTextArea:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJTextArea3 extends JFrame{
JLabel rotulo;
JTextArea texto;
JScrollPane painelrolagem;
JPanel painel;
public ExemploJTextArea3(){
super("Exemplo com JTextField");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel ("Endereço");
rotulo.setBounds(50,20,100,20);
texto = new JTextArea(10,20);
painelrolagem = new JScrollPane(texto);
painelrolagem.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
painelrolagem.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
painel = new JPanel();
painel.add(painelrolagem);
painel.setBounds(40,40,250,250);
tela.add(rotulo);
tela.add(painel);
setSize(300, 280);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextArea3 app = new ExemploJTextArea3();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Como este aplicativo é bem semelhante ao do tópico anterior, vamos nos


concentrar apenas nos trechos de códigos relevantes à adição das barras de
rolagem.

Definindo as variáveis: JLabel rotulo; JTextArea texto;


JScrollPane painelrolagem; JPanel painel;

A área de texto é criada com a seguinte linha: texto = new JTextArea(10,20);

Veja que criamos uma instância da classe JTextArea da forma usual. Em


seguida a linha: painelrolagem = new JScrollPane(texto);

Cria uma instância da classe JScrollPane fornecendo a referência texto como


argumento. É importante observar que, ao usar esse construtor, as dimesões
do painel de rolagem serão definidas de modo acomodar a área de texto criada
previamente.
Por padrão, as barras de rolagem definidas com o construtor anterior serão
exibidas somente quando o conteúdo da área de texto exceder sua capacidade
de exibição. Neste exemplo optamos por sempre mostrar as barras de rolagem.
Isso foi conseguido com as duas instruções seguintes:

painelrolagem.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROL
LBAR_ALWAYS);

painelrolagem.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_S
CROLLBAR_ALWAYS);

O aparecimento ou não das barras de rolagem vertical e horizontal é controlado


pelos métodos setVerticalScrollBarPolicy e setHorizontalScrollBarPolicy.
Esses dois métodos aceitam os valores de constantes na classe JScrollPane.
Para que seus aplicativos sigam os padrões predefinidos, use as constantes
que exibirão as barras de rolagem somente quando forem necessárias.

Neste aplicativo fizemos uso da classe JPanel para inclui as barras de


rolagem. Com isso temos mais controle sobre a disposição dos componentes
que estamos usando. Ela se destaca apenas um truque que usamos para
definir o espaçamento de todos os controles corretamente.

painel = new JPanel();

Para finalizar a análise, é adicionado no painel as barras de rolagem


(painelderolagem), pois as barras de rolagem quando estavam sendo
instanciadas pelo JScrollPane, recebeu o a área de texto (texto).

painel.add(painelrolagem);

posiciona o painel na janela: painel.setBounds(40,40,250,250);

Adiciona o painel na janela: tela.add(painel);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

A tabela seguinte relaciona essas constantes e descreve seus uso:

Constante Uso
HORIZONTAL_SCROLL_AS_NEEDED Exibe a barra de rolagem horizontal
somente quando for necessário.
HORIZONTAL_SCROLL_NEVER A barra de rolagem horizontal nunca é
exibida.
HORIZONTAL_SCROLL_ALWAYS Define que a barra de rolagem horizontal
deve ser exibida sempre.
VERTICAL_SCROLL_AS_NEEDED Exibe a barra de rolagem vertical
somente quando for necessário.
VERTICAL _SCROLL_NEVER A barra de rolagem vertical nunca é
exibida.
VERTICAL_SCROLL_ALWAYS Define que a barra de rolagem vertical
deve ser exibida sempre.

21.2 – Controlando a quebra automática de linhas

Por padrão, controles criados como instância da classe JTextArea não


oferecem a funcionalidade de quebra automática de linhas. Isso é incoveniente
em algumas situações em que o usuário digita longos trechos de texto no
componente. Imagine algo em torno de 50 a 100 palavras sendo exibidas em
apenas uma linha. Nada elegante. É possível forçar a quebra de linha
automática nos objetos JTextArea com uma chamada ao método
setLineWrap. Este método aceita os argumentos true ou false. Você tem que
usar juntamente com o setLineWrap o método setWrapStyleWord para que
haja a quebra de linha acontença entre palavras, se a próxima palavra não
couber na linha atual, deve ser deslocada para a próxima linha. Este método
aceita os argumentos true ou false.

Veja a sintaxe:
texto.setLineWrap(true);
texto.setWrapStyleWord(true);

Aplicativo disponível com o nome de ExemploJTextArea2.java

21.3 – Cor da fonte, Cor de fundo

Nada como alterar a cor da fonte do JTextArea, argumento igual ao JTextField

texto.setForeground(Color.blue);
texto.setBackground(Color.yellow);

21.4 – Tipo, estilo e tamanho de fonte

Nada como alterar a cor de fundo do JTextArea, argumento igual ao JTextField:

texto.setFont(new Font("Comic Sans MS",Font.BOLD+Font.ITALIC,20));

Exemplo disponível com o nome de ExemploJTextArea4.java

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

22 – Adicionando menus a um aplicativo Java

Menus são uma parte integrante de qualquer aplicativo de interface


gráfica. Seu uso ajuda a agrupar o acesso as funcionalidades do programa em
lugares já conhecidos pelo usuário e evita a poluição desnecessárias de
componentes na tela do aplicativo.
Menus são criados como objetos das classes JMenurBar, JMenu,
JMenuitem, JCheckBoxMenuItem e JRadioButtonMenuItem. Todas essas
classes têm sua relevância e uma aplicação de cada um será apresentada em
seguida. Por ora, saiba que o menu pode ser adicionados apenas aos objetos
de classes que fornecem o método JMenuBar. A classe JMenuBar serve para
criar a barra de menus. Já o JMenu adiciona os itens do menu.Já os itens dos
menus são colocados com JMenuItem.
O Aplicativo seguinte apresenta uma barra de menus, que contém o
menu opções, com os itens limpar, fonte e sair:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu extends JFrame{
JMenuBar barra;
JMenu opcoes;
JMenuItem limpar,fonte,sair;
public ExemploDeMenu(){
super("Exemplo de Menus");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenuItem("Fonte");
sair = new JMenuItem("Sair");
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu app = new ExemploDeMenu();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Vamos analisar as partes mais importantes deste código:

Declarar na área pública a variável que vai receber a barra de menu:


JMenuBar barra;

Criar a barra de menus: barra = new JMenuBar();

Anexam a barra de menus à janela com uma chamada ao método


setJMenuBar da classe JFrame (janela): setJMenuBar(barra);
Uma janela pode ter apenas uma barra de menus, disposta horizontalmente na
parte superior da janela.

O menu Opções é criado com a seguinte instrução:


opcoes = new JMenu("Opções");

Depois é anexado a barra de menus: barra.add(opcoes);

Observe o o uso do método setMnemonic para definir as teclas de atalho para


o menu e todos os itens do menu.

limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);

Agora é a hora de criar os itens do menu opções:


limpar = new JMenuItem("Limpar");
fonte = new JMenuItem("Fonte");
sair = new JMenuItem("Sair");

Lembrando de declarar as variáveis que irão receber os itens do menu como


JMenuItem: JMenuItem limpar,fonte,sair;

Agora vamos anexar os itens no menu opções:


opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator(); Adiciona um linha separadora no menu
opcoes.add(sair);

Exemplo do aplicativo acima sendo execurado

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

22.1 – Como adicionar submenus a um item do menu

Sbmenus podem ser adicionados a um determinado item de menu para tornar


o agrupamento lógico ainda mais eficiente. Essa técnica consiste em adicionar
um JMenu a outro JMenu. Veja um exemplo de como isso pode ser feito:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu2 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,cor;
JMenuItem limpar,sair,estilo,tamanho,azul,verde,vermelho,amarelo,preto;
public ExemploDeMenu2(){
super("Exemplo de Menus com submenus");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
estilo = new JMenuItem("Estilo");
tamanho = new JMenuItem("Tamanho");
sair = new JMenuItem("Sair");
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu2 app = new ExemploDeMenu2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Vamos analisar o aplicativo:

As variáveis que no aplicativo anterior foram declaradas como JMenuItem,


para que possam ser anexado a submenus elas terão que mudar de classe e
passar a ser da classe JMenu. Veja:

JMenu opcoes,fonte,cor;
Observe como o item Fonte do menu
Opções tem uma seta para a direita,
indicando que tem nesse item três
submenus, Cor, Estilo e Tamanho. O
item Cor também possui uma seta
para direita, indicando que nesse item
possui, cinco subitens.

Agora vamos criar o item fonte e cor como JMenu, e os itens azul, verde,
vermelho, amarelo e preto serão criados como JMenuItem, vai indicar que o
JMenuItem é um item do JMenu do item Cor.
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
estilo = new JMenuItem("Estilo");
tamanho = new JMenuItem("Tamanho");

Agora vamos anexar os itens cor, estilo e tamanho no item fonte:


fonte.add(cor); fonte.add(estilo); fonte.add(tamanho);

E finalmente anexar as cores dentro do item cor:


cor.add(azul); cor.add(verde); cor.add(vermelho);
cor.add(amarelo); cor.add(preto);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

22.2 – Como usar caixa de seleção como itens do menu JCheckBoxMenuItem

Neste tópico vamos mostrar a técnica que usa as caixas de seleção nos itens
do menu. A vantagem de usar caixas de seleção como itens de menu é que
você pode marcar e desmarcar itens sem a exigência de que no mínimo um
dos itens esteja selecionado.
Caixas de seleção como itens do menu são criadas como instâncias da classe
JCheckBoxMenuItem. As propriedades, métodos e eventos dessa classe são
semelhantes aos da classe JCheckBox, de modo que você não terá nenhuma
dificuldade em usá-la em seus aplicativos.
A listagem seguinte mostra como podemos criar as caixas de seleção, onde
todas podem ser selecionadas:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu3 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,estilo,cor;
JMenuItem limpar,sair,tamanho,azul,verde,vermelho,amarelo,preto;
JCheckBoxMenuItem normal, negrito, italico, negritoitalico;
public ExemploDeMenu3(){
super("Exemplo de Menus com JChekBoxMenuItem");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
estilo = new JMenu("Estilo");
tamanho = new JMenuItem("Tamanho");
normal = new JCheckBoxMenuItem("Normal");
negrito = new JCheckBoxMenuItem("Negrito");
italico = new JCheckBoxMenuItem("Itálico");
negritoitalico = new JCheckBoxMenuItem("Negrito e Itálico");
sair = new JMenuItem("Sair");
opcoes.setMnemonic(KeyEvent.VK_O);
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
normal.setMnemonic(KeyEvent.VK_M);
negrito.setMnemonic(KeyEvent.VK_N);
italico.setMnemonic(KeyEvent.VK_I);
negritoitalico.setMnemonic(KeyEvent.VK_C);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

opcoes.add(sair);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
estilo.add(normal);
estilo.add(negrito);
estilo.add(italico);
estilo.add(negritoitalico);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu3 app = new ExemploDeMenu3();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Vamos analisar o aplicativo:

Declarar as variáveis que vão receber as caixas de seleção:

JCheckBoxMenuItem normal, negrito, italico, negritoitalico;

Anexar os estilos as caixas de seleção:


normal = new JCheckBoxMenuItem("Normal");
negrito = new JCheckBoxMenuItem("Negrito");
italico = new JCheckBoxMenuItem("Itálico");
negritoitalico = new JCheckBoxMenuItem("Negrito e Itálico");

Definir as teclas de atalho:


normal.setMnemonic(KeyEvent.VK_M);
negrito.setMnemonic(KeyEvent.VK_N);
italico.setMnemonic(KeyEvent.VK_I);
negritoitalico.setMnemonic(KeyEvent.VK_C);

Anexar os estilos ao item estilo do menu fontes:


estilo.add(normal);
estilo.add(negrito);
estilo.add(italico);
estilo.add(negritoitalico);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

22.3 – Usando botões de seleção como item do menu JRadioButtonMenuItem

Botões de seleção pode ser adicionados a um menu como instância da classe


JRadioButtonMenuItem. Usamos tais controles quando queremos que
apenas um item entre dois ou mais itens possam ser selecionados. Um bom
exemplo é quando queremos fornecer um menu que permite escolhe o
tamanho da fonte que será aplicada a um determinado componente.
O aplicativo seguinte contém o Menu Opções, com o item Fonte e o submenu
Tamanho, onde você pode escolher o tamanho desejado para sua fonte.
Lembrando que somente um tamanho pode ser escolhido, e a mesma coisa foi
definida para as caixas de seleção (JRadioButtonMenuItem), somente um
estilo poderá ser definido:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu4 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,cor,estilo,tamanho;
JMenuItem limpar,sair,azul,verde,vermelho,amarelo,preto;
JCheckBoxMenuItem nomeE[];
ButtonGroup grupoT,grupoE;
JRadioButtonMenuItem tamanhoF[];
String tam[] = {"12","14","16","18"};
String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"};
public ExemploDeMenu4(){
super("Exemplo de Menus com JRadioButtonMenuItem");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
estilo = new JMenu("Estilo");
grupoE = new ButtonGroup();
nomeE = new JCheckBoxMenuItem[4];
for(int i = 0; i < 4; i++){
nomeE[i] = new JCheckBoxMenuItem(est[i]);
estilo.add(nomeE[i]);
grupoE.add(nomeE[i]);
}
tamanho = new JMenu("Tamanho");
grupoT = new ButtonGroup();
tamanhoF = new JRadioButtonMenuItem[4];
for(int i = 0; i < 4; i++){
tamanhoF[i] = new JRadioButtonMenuItem(tam[i]);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tamanho.add(tamanhoF[i]);
grupoT.add(tamanhoF[i]);
}
sair = new JMenuItem("Sair");
opcoes.setMnemonic(KeyEvent.VK_O);
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu4 app = new ExemploDeMenu4();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Neste aplicativo existem algumas coisas diferentes, os itens do menu estilo


desse aplicativo foi alterado, e tem algumas modificações do anterior veja:

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

1º Passo:

Para este exemplo vamos usar dois vetores, veja as declarações:

JCheckBoxMenuItem nomeE[];
JRadioButtonMenuItem tamanhoF[];

Um vetor é para a caixa de seleção (JCheckBoxMenuItem), que recebe o


nome de nomeE, e a letra E é para representar estilo.
Esse vetor serve para definirmos os itens do submenu Cor.

O outro vetor é para o botão de seleção (JRadioButtonMenuItem ), que


recebe o nome de nomeF, e letra F é para representar fonte.
Esse vetor serve para definirmos os itens do submenu Estilo.

2º Passo:

Agora declaramos duas instânciasda classe ButtonGroup:

ButtonGroup grupoT,grupoE;

Atribuimos os nomes grupoT, pertece ao tamanho da fonte, e o grupoE, que


pertence ao estilo da fonte.

Esse ButtonGroup agrupa as opções dos onde você só poderá escolher um


item de cada submenu.

3º Passo:

Criamos dois vetores do tipo String que servirão para definimos os valores dos
itens do menu.

String tam[] = {"12","14","16","18"};


String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"};

O primeiro para tamanho da fonte e o segundo para o estilo.

4º Passo:

Criar os submenus:

O submenu tamanho é criado com a seguinte instrução:


tamanho = new JMenu("Tamanho");

O submenu estilo é criado com a seguinte instrução:


estilo = new JMenu("Estilo");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

5ª Passo:
Em seguinda inicializamos as referências dos grupos:

grupoE = new ButtonGroup();


grupoT = new ButtonGroup();

6ª Passo:

Atribuir a quantidade de itens a caixa de seleção:


nomeE = new JCheckBoxMenuItem[4];

Atribuir a quantidade de itens ao botão de seleção:


tamanhoF = new JRadioButtonMenuItem[4];

7º Passo:

Para instanciar os itens do menu Cor, usamos o seguinte laço for:

for(int i = 0; i < 4; i++){


nomeE[i] = new JCheckBoxMenuItem(est[i]);
estilo.add(nomeE[i]);
grupoE.add(nomeE[i]);
}

Esse laço é executado uma vez para cada um dos valores contidos no vetor
est que no nosso caso são quatro estilo (normal, negrito, itálico, negrito e
itálico). A cada interação atribuímos ao item de menu atual um dos valores do
vetor est, adicionamos o item ao menu Estilo e também ao grupo de botões
grupoE. Lembrando que o primeiro índice do vetor é 0, o segundo é 1, o
terceiro é 2 e o quarto é 3, por isso usamos no for i < 4, quando for satisfeita a
condição o for é encerrado e o menu recebe os estilos.

for(int i = 0; i < 4; i++){


tamanhoF[i] = new JRadioButtonMenuItem(tam[i]);
tamanho.add(tamanhoF[i]);
grupoT.add(tamanhoF[i]);
}

Esse laço é executado uma vez para cada um dos valores contidos no vetor
tam que no nosso caso são quatro estilo (12, 14, 16, 18). A cada interação
atribuímos ao item de menu atual um dos valores do vetor tam, adicionamos o
item ao menu Tamanho e também ao grupo de botões grupoT. Lembrando
que o primeiro índice do vetor é 0, o segundo é 1, o terceiro é 2 e o quarto é 3,
por isso usamos no for i < 4, quando for satisfeita a condição o for é encerrado
e o menu recebe os tamanhos.

OBS: Quando usamos vetores para criar itens de menus não podemos
adicionar teclas de atalho.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

22.4 – Menu executando ações

Quando um determinado item é selecionado, o código do aplicativo deve


detectar a seleção e efetuar as ações determinadas. Esse procedimento é fácil.
Uma vez que a classe JMenuItem herda abstração de botões e fornece o
método addActionListener.
No aplicativos adicionamos ao exemplo um componente JTextArea, para usar
as opções dos menus Limpar, Cor, Estilo e Tamanho. Use o menu Limpar para
apagar todo o conteúdo do JTextArea. Use a caixa de seleção para definir os
estilos da fonte do JTextArea. Os estilos possíveis são: normal, negrito, itálico,
negrito e itálico. E utilize o botão de seleção para obter o tamanho da fonte do
JTextArea. Os tamanhos possíveis são: 12, 14, 16 e 18.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu5 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,cor,estilo,tamanho;
JMenuItem limpar,sair,azul,verde,vermelho,amarelo,preto;
JCheckBoxMenuItem nomeE[];
ButtonGroup grupoT,grupoE;
JRadioButtonMenuItem tamanhoF[];
String tam[] = {"12","14","16","18"};
String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"};
JTextArea texto;
JPanel painel;
JScrollPane rolagem;
int estilofonte, tamfonte;
public ExemploDeMenu5(){
super("Exemplo de Menus executando ações");
Container tela = getContentPane();
tela.setLayout(null);
estilofonte=Font.PLAIN;
tamfonte=12;
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
TratadorE tratestilo = new TratadorE();
estilo = new JMenu("Estilo");
grupoE = new ButtonGroup();
nomeE = new JCheckBoxMenuItem[4];
for(int i = 0; i < 4; i++){
nomeE[i] = new JCheckBoxMenuItem(est[i]);
estilo.add(nomeE[i]);
grupoE.add(nomeE[i]);
nomeE[i].addItemListener(tratestilo); }
TratadorT trattamanho = new TratadorT();
tamanho = new JMenu("Tamanho");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

grupoT = new ButtonGroup();


tamanhoF = new JRadioButtonMenuItem[4];
for(int i = 0; i < 4; i++){
tamanhoF[i] = new JRadioButtonMenuItem(tam[i]);
tamanho.add(tamanhoF[i]);
grupoT.add(tamanhoF[i]);
tamanhoF[i].addItemListener(trattamanho); }
sair = new JMenuItem("Sair");
opcoes.setMnemonic(KeyEvent.VK_O);
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
texto = new JTextArea(10,20);
rolagem = new JScrollPane(texto);
rolagem.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_
SCROLLBAR_ALWAYS);
rolagem.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_
SCROLLBAR_ALWAYS);
painel = new JPanel();
painel.add(rolagem);
painel.setBounds(30,30,250,250);
tela.add(painel);
limpar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setText("");
texto.requestFocus();}});
azul.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.blue);
repaint();}});
verde.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.green);
repaint();}});
vermelho.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.red);
repaint();}});
amarelo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.yellow);
repaint();}});
preto.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.black);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

repaint();}});
sair.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int resposta;
resposta=JOptionPane.showConfirmDialog(null,"Deseja realmente
sair?","Mensagem do Programa",JOptionPane.YES_NO_OPTION);
if (resposta==6)
System.exit(0);}});
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true); }
public static void main (String args[]){
ExemploDeMenu5 app = new ExemploDeMenu5();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }
private class TratadorE implements ItemListener{
public void itemStateChanged(ItemEvent e){
if(nomeE[0].isSelected())
estilofonte= Font.PLAIN;
if(nomeE[1].isSelected())
estilofonte= Font.BOLD;
if(nomeE[2].isSelected())
estilofonte= Font.ITALIC;
if(nomeE[3].isSelected())
estilofonte= Font.BOLD+Font.ITALIC;
texto.setFont(new Font("", estilofonte, tamfonte));
repaint(); } }
private class TratadorT implements ItemListener{
public void itemStateChanged(ItemEvent e){
if(tamanhoF[0].isSelected())
tamfonte= 12;
if(tamanhoF[1].isSelected())
tamfonte= 14;
if(tamanhoF[2].isSelected())
tamfonte= 16;
if(tamanhoF[3].isSelected())
tamfonte= 18;
texto.setFont(new Font("", estilofonte, tamfonte));
repaint(); } }
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Menu Limpar:

limpar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setText("");
texto.requestFocus();}});

Quando este item for executado, o componente JTextArea será limpo e


receberá o foco.

Menu Sair:

sair.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int resposta;
resposta=JOptionPane.showConfirmDialog(null,"Deseja realmente
sair?","Mensagem do Programa",JOptionPane.YES_NO_OPTION);
if (resposta==6)
System.exit(0);}});

Quando este item de menu for selecionado, uma mensagem perguntando se o


usuário deseja fechar o aplicativo será exibida, caso o usuário escolha sim o
aplicativo será fechado. É claro que aqui usamos uma classe anônima. Onde
declaramos uma variável inteira chamada resposta, e atribuímos ela ao
JOptionPane que vai exibir uma mensagem na tela, quando o usuário escolher
a opção, a variável resposta recebe esse valor, e depois é executado o laço IF,
se o conteúdo da variável resposta for igual a 6 então o IF, chama o método
System.exit(0), e finaliza o aplicativo.

Menu Fonte -> Estilo:

Agora vamos usar uma classe privada que implementa a interface


ActionListener e tratar todos os itens de menu Estilo e Tamanho de uma só
vez.

private class TratadorE implements ItemListener{


public void itemStateChanged(ItemEvent e){
if(nomeE[0].isSelected())
estilofonte= Font.PLAIN;
if(nomeE[1].isSelected())
estilofonte= Font.BOLD;
if(nomeE[2].isSelected())
estilofonte= Font.ITALIC;
if(nomeE[3].isSelected())
estilofonte= Font.BOLD+Font.ITALIC;
texto.setFont(new Font("", estilofonte, tamfonte));
repaint(); } }

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Menu Fonte -> Tamanho

private class TratadorT implements ItemListener{


public void itemStateChanged(ItemEvent e){
if(tamanhoF[0].isSelected())
tamfonte= 12;
if(tamanhoF[1].isSelected())
tamfonte= 14;
if(tamanhoF[2].isSelected())
tamfonte= 16;
if(tamanhoF[3].isSelected())
tamfonte= 18;
texto.setFont(new Font("", estilofonte, tamfonte));
repaint(); } }

Menu Fonte -> Cor -> Amarelo

Quando o item correspondente a cor for selecionado e executado o


componente JTextArea, receberá a cor escolhida

amarelo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.yellow);
repaint();}});

vermelho.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.red);
repaint();}});

Declarar a variável que vai receber o conteúdo da classe privada:

Variavel trattamanho recebe a referência da classe privada TratadorT.


Variavel tratestilo recebe a referência da classe privada TratadorE.

TratadorT trattamanho = new TratadorT();


TratadorE tratestilo = new TratadorE();

Chama a variável que esta fazendo referência a classe privada que vai
executar a ação do menu:

tamanhoF[i].addItemListener(trattamanho);
nomeE[i].addItemListener(tratestilo); }

OBS: O método repaint(), sempre é chamando nas classes, ele serve para
atualizar o estilo, fonte ou a cor escolhida.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

23 – Criando um menu de contexto – Classe JPopupMenu

Menus de contexto ou menu popup têm a mesma funcionalidade dos menus


convecionais. A única diferença é que menus de contexto são exibidos quando
clicamos com o botão direito no componente para o qual o menu foi definido.
Para ver um exemplo de menu com contexto, abra seu editor de texto favorito e
clique com o botão direito sobre a área de edição de texto. As chances de um
menu de contexto ser exibido são enormes. Em Java menus de contexto são
criados como objetos da classe JPopupMenu. Os itens do menu são criados a
partir da classe JMenuItem, de modo que você pode usar todas as técnicas
que vimos nos tópicos anteriores.
O aplicativo seguinte cria um menu de contexto para uma área de texto e
oferece as opções de recortar, copiar e colar. Veja a listagem para o exemplo:

mport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDePopupMenu extends JFrame{
JPopupMenu opcoes;
JMenuItem recortar,copiar,colar;
JTextArea texto;
public ExemploDePopupMenu(){
super("Exemplo de PopupMenu");
Container tela = getContentPane();
tela.setLayout(null);
texto = new JTextArea(10,20);
texto.setBounds(30,30,250,250);
texto.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
if(e.isPopupTrigger())
opcoes.show(e.getComponent(),e.getX(),e.getY()); }});
Tratador tratmenu = new Tratador();
opcoes = new JPopupMenu();
recortar = new JMenuItem("Recortar");
copiar = new JMenuItem("Copiar");
colar = new JMenuItem("Colar");
recortar.setMnemonic(KeyEvent.VK_R);
copiar.setMnemonic(KeyEvent.VK_C);
colar.setMnemonic(KeyEvent.VK_L);
recortar.addActionListener(tratmenu);
copiar.addActionListener(tratmenu);
colar.addActionListener(tratmenu);
opcoes.add(recortar);
opcoes.add(copiar);
opcoes.addSeparator();
opcoes.add(colar);
tela.add(texto);
setSize(320,340);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDePopupMenu app = new ExemploDePopupMenu();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

}
private class Tratador implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==recortar)
texto.cut();
if(e.getSource()==copiar)
texto.copy();
if(e.getSource()==colar)
texto.paste();
repaint(); }}
}

Quando você executar esse aplicativo, clique com o botão direito na área de
texto e o menu de contexto será exibido. Escolha um dos itens do menu e veja
o resultado obtido.

O menu de contexto usado para este exemplo é criado na linha:


opcoes = new JPopupMenu();

Para exibi-lo, criamos uma classe anônima MouseAdapter e a fornecemos


como argumento para o método addMouseListener da área de texto:
texto.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e) {
if(e.isPopupTrigger())
opcoes.show(e.getComponent(),e.getX(),e.getY()); }});

Quando clicamos com o botão direito na área de texto e o método


mouseReleased é disparado, efetuamos uma chamada ao método
isPopupTrigger da classe MouseEvent. Esse método retorna verdadeio se o
evento foi disparado com o botão direito do mouse. Satisfeita a condição, o
menu de contexto é exibido. Observe os parâmetros para o método show da
classe JPopupMenu:

show(Componet invoker, int x, int y);


opcoes.show(e.getComponent(),e.getX(),e.getY()); }});

O parâmetro invoker é o componente para o qual o menu de contexto esta


definido. Os parâmetros x e y são as coordenadas do mouse no momento em
que o menu de contexto é chamado.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

24 – Uso da classe JToolBar para criar barra de ferramentas

Uma barra de ferramentas é um contêiner para agrupar botões e outros


controles usados com maior freqüência no aplicativo. Grande parte dos
aplicativos atuais apresenta barras de ferramentas, de modo que você deve
analisar e verificar a necessidade de implementar essa funcionalidade em seus
programas. Barras de ferramentas em aplicativos Java são criadas como
objetos da classe JToolBar. Essa classe oferece algumas funcionalidades bem
interessantes, entre elas a capacidade de ser arrastada pela janela do
aplicativo (e até fora deste). O aplicativo seguinte mostra como incluir uma
barra de ferramentas semelhantes às encontradas em muitos programas
atuais. No momento os botões não fornecem nenhuma funcionalidade, mas
você será capaz de arrastar a barra para qualquer um dos cantos da janela e,
para sua surpresa, arrastá-la para fora do aplicativo. Veja a listagem para o
exemplo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBarraDeFerramentas extends JFrame{
JToolBar barra;
JButton direita,esquerda,centralizar,recortar,copiar,colar;
ImageIcon imagens[];
public ExemploBarraDeFerramentas(){
super("Exemplo de Barra de Ferramentas");
Container tela = getContentPane();
tela.setLayout(null);
String icones[]={"imagens/direita.gif","imagens/esquerda.gif",
"imagens/centro.gif","imagens/recortar.gif",
"imagens/copiar.gif","imagens/colar.gif"};
imagens = new ImageIcon[6];
for(int i = 0;i < 6;i++){
imagens[i] = new ImageIcon(icones[i]);}
direita = new JButton(imagens[0]);
esquerda = new JButton(imagens[1]);
centralizar = new JButton(imagens[2]);
recortar = new JButton(imagens[3]);
copiar = new JButton(imagens[4]);
colar = new JButton(imagens[5]);
direita.setToolTipText("Direita (Ctrl+d)");
esquerda.setToolTipText("Esquerda (Ctrl+e)");
centralizar.setToolTipText("Centralizar (Ctrl+z)");
recortar.setToolTipText("Recortar (Ctrl+x)");
copiar.setToolTipText("Copiar (Ctrl+c)");
colar.setToolTipText("Colar (Ctrl+v)");
barra = new JToolBar("Barra de Ferramentas");
UIManager.put("ToolTip.background",SystemColor.info);
UIManager.put("ToolTip.foreground",Color.blue);
barra.setRollover(true);
barra.add(direita);
barra.add(esquerda);
barra.add(centralizar);
barra.addSeparator();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

barra.add(recortar);
barra.add(copiar);
barra.add(colar);
barra.setBounds(1,1,260,50);
tela.add(barra);
setSize(320,340);
setLocationRelativeTo(null);
setVisible(true); }
public static void main (String args[]){
ExemploBarraDeFerramentas app = new ExemploBarraDeFerramentas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Para que este exemplo ficasse bem realista, adicionamos uma barra de menus.
Experimente arrastar a barra de ferramentas.

Declarar o vetor que vai receber as imagens:


ImageIcon imagens[];

Para definir as imagens dos botões da barra de ferramentas, usamos o


seguinte vetor de objetos com seis posições da classe ImageIcon:
imagens = new ImageIcon[6];

O nome e o caminho das imagens são definidos como itens do vetor ícones:
String icones[]={"imagens/direita.gif","imagens/esquerda.gif",
"imagens/centro.gif","imagens/recortar.gif",
"imagens/copiar.gif","imagens/colar.gif"};

O próximo passo é instanciar os objetos da classe ImageIcon com as imagens


do vetor ícones. Isso é feito no laço seguinte:
for(int i = 0;i < 6;i++){
imagens[i] = new ImageIcon(icones[i]); }

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

São criados seis botões com imagens veja seguintes instruções:

direita = new JButton(imagens[0]);


esquerda = new JButton(imagens[1]);
centralizar = new JButton(imagens[2]);
recortar = new JButton(imagens[3]);
copiar = new JButton(imagens[4]);
colar = new JButton(imagens[5]);

Próximo passo adicionar dicas aos botões da barra de ferramentas:


direita.setToolTipText("Direita (Ctrl+d)");
esquerda.setToolTipText("Esquerda (Ctrl+e)");
centralizar.setToolTipText("Centralizar (Ctrl+z)");
recortar.setToolTipText("Recortar (Ctrl+x)");
copiar.setToolTipText("Copiar (Ctrl+c)");
colar.setToolTipText("Colar (Ctrl+v)");

A barra de ferramentas é criada na linha:


barra = new JToolBar("Barra de Ferramentas");

Trocar a cor de fundo da dica dos botões da barra de ferramentas:


UIManager.put("ToolTip.background",SystemColor.info);

Trocar a cor da letra da dica dos botões da barra de ferramentas:


UIManager.put("ToolTip.foreground",Color.blue);

Os botões são adicionados à barra de ferramentas pelo método add:


barra.add(direita);
barra.add(esquerda);
barra.add(centralizar);
barra.addSeparator();
barra.add(recortar);
barra.add(copiar);
barra.add(colar);

Aplicar o efeito Rollover aos botões da barra de ferramentas:


O efeito Rollover modifica algum aspecto do controle quando movemos o
ponteiro sobre ele. Geralmente esse efeito aplica cores e imagens diferentes.
Em barras de ferramentas a técnica mais comum é aplicar uma borda
diferenciada quando o ponteiro adentra ou sai da área do componente.
Java permite aplicar esse efeito a barras de ferramentas por meio de uma
chamada ao método setRollover da classe JToolBar. Veja como isso pode
ser feito:
barra.setRollover(true);

Posicionar a barra de ferramentas na janela:


barra.setBounds(1,1,260,50);

Adicionar a barra de ferramentas na janela:


tela.add(barra);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

25 – Como criar janelas secundárias com o uso da classe JDialog

Janelas secundárias são modais ou não-modais que dependem da janela


principal do aplicativo. Por meio dessas janelas podemos efetuar novas
operações acessando até mesmo os componentes da janela principal. Janelas
secundárias são criadas como instâncias da classe JDialog, e fornece
praticamente todas as funcionalidades da classe JFrame. Isso quer dizer que
podemos obter o painel de conteúdo de um objeto dessa classe e incluir
componentes, interagir com o usuário, enviando dados para a janela principal.

25.1 – Como criar janelas secundárias modais

O aplicativo seguinte é o nosso ponto de partida para o estudo da classe


JDialog. Trata-se de uma janela principal com apenas um botão. Quando você
clicar no botão abrir, uma nova janela com apenas um botão é aberta. Veja:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NovaJanela2 extends JFrame{
JButton abrir;
Inicial segundajanela;
public NovaJanela2(){
super("Abrir uma nova janela");
Container tela = getContentPane();
tela.setLayout(null);
abrir = new JButton("Abrir");
abrir.setBounds(100,50,80,20);
abrir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
segundajanela = new Inicial(null,"Segunda Janela",true);
segundajanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
segundajanela.setVisible(true); }});
tela.add(abrir);
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);}
public static void main(String args[]){
NovaJanela2 app = new NovaJanela2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
private class Inicial extends JDialog{
JButton sair;
public Inicial(Frame owner, String title,boolean modal){
super(owner,title,modal);
Container tela1 = getContentPane();
tela1.setLayout(null);
sair = new JButton("Sair");
sair.setBounds(50,50,100,20);
TBsair tsair = new TBsair();
sair.addActionListener(tsair);
tela1.add(sair);
setSize(200,200);
setLocationRelativeTo(null);} }
private class TBsair implements ActionListener{
public void actionPerformed(ActionEvent evento){
int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o
programa?","Mensagem de saída",JOptionPane.YES_NO_OPTION);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();}}
}
}
Primeira janela Segunda Janela

Janela Modal – Você não pode clicar na janela de traz:

Vamos analisar o aplicativo:

Após a execução do aplicativo, clique no botão Abrir. Você visualizará a


segunda janela com o botão de Sair. O entendimento do código é muito
importante para o uso correto de janelas secundárias em um aplicativo Java. É
Importante acompanhar atentamente a análise que faremos.

A classe privada Inicial:

private class Inicial extends JDialog{


JButton sair;
public Inicial(Frame owner, String title,boolean modal){
super(owner,title,modal);
Container tela1 = getContentPane();
tela1.setLayout(null);
sair = new JButton("Sair");
sair.setBounds(50,50,100,20);
TBsair tsair = new TBsair();
sair.addActionListener(tsair);
tela1.add(sair);
setSize(200,200);
setLocationRelativeTo(null);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Declaramos a variável que vai fazer referência ao botão sair: JButton sair;

Declaramos a referência segundajanela que receberá a Incial:


Inicial segundajanela;

Classe privada Incial: Esta classe herda JDialog. Observe os parâmetros para
seu construtor: public Inicial(Frame owner, String Title, boolean modal);

O parâmetro owner é usado para especificar a janela principal a partir da qual


a janela secundária será chamada. O parâmetro title serve para fornece o título
para janela, modal especifica se a janela será modal ou não-modal. Uma
janela modal tem o foco e deve ser fechada antes que o usuário volte à janela
principal do aplicativo.

Na linha linha do construtor temos uma chamada ao construtor da superclasse


JDialog: super(owner,title,modal);
O que fazemos aqui é transferir os valores recebidos para a superclasse.

Chamamos os métodos para adicionar componentes na janela:


Container tela1 = getContentPane();
tela1.setLayout(null);

Em seguinda, adicionamos o texto a ser exibido no botão Sair, logo após


posicionamos o botão na janela, criamos a variável que vai fazer referência a
classe privada TBsair, depois adicionamos essa classe ao botão sair pelo
evento addActionListener, e chamamos o método add, e adicionamos o botão
na janela secundária.
sair = new JButton("Sair");
sair.setBounds(50,50,100,20);
TBsair tsair = new TBsair();
sair.addActionListener(tsair);
tela1.add(sair);

Em seguida definimos o tamanho da janela secundária:


setSize(200,200);

Por final centralizamos a janela:


setLocationRelativeTo(null);

Voltando à janela principal agora, para chamar a janela secundária, usamos o


seguinte trecho de código:

abrir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
segundajanela = new Inicial(null,"Segunda Janela",true);
segundajanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
segundajanela.setVisible(true);
}
}
);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Quando clicamos no botão e o método actionPerformed da classe anônima


ActionListener é chamado, instanciamos um objeto da janela secundária e o
atribuímos à referência segundajanela. Em seguida definimos o modo como a
janela vai se comportar quando tentamos fecha-la:

segundajanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Ac constate DISPOSE_ON_CLOSE esconde a janela e em seguida a libera da


memória. Este é o comportamente mais adequado para janelas modais.

A úttima linha: segundajanela.setVisible(true);

Exibe a janela colocando-a na frente da janela principal. Caso queira, revise o


tópico para posicionar a janela secundária no centro da tela quando ela for
exibida.

Classe privada TBsair (Tratar Botão Sair)

private class TBsair implements ActionListener{


public void actionPerformed(ActionEvent evento){
int status = JOptionPane.showConfirmDialog(null,"Deseja realmente
fechar o programa?","Mensagem de
saída",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();
}
}
}

Sem muita modificações dos exemplos anteriores, o que tem de diferente é que
quando você clicar em Sim para finalizar a janela secundária, o aplicativo
coloca a janela invisível com o método setVisible(false); e depois retira da
memória com o método dispose().

25.2 – Como criar janelas secundárias não-modais

Janela não-modais são aquelas onde você, pode fazer uso da janela principal.
Exemplo do aplicativo de janela não-modal, veja o exercício
NovaJanela4.java.

Modificações a serem observadas:

segundajanela = new Inicial(null,"Segunda Janela",false);

Para janela não-modais, o último parâmetro deve ser false.

Para janela modal, o último parâmetro deve ser true

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

25.3 – Como criar janelas secundárias com JFrame

Como a classe JDialog, também podemos criar uma janela com a classe
JFrame, quando você iniciar esse aplicativo, será executada a tela principal
com um botão chamado Abrir, quando você abrir a janela secundária com o
botão Sair, a janela principal fica invisível com o método setVisible(false); e
depois é retirada da memória com o método dispose(), já na janela secundária
quando você clicar em sair uma mensagem será exibida, perguntando se você
quer fechar o aplicativo, caso você responda sim a janela é fechada.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NovaJanela extends JFrame{
JButton abrir;
Inicial segundajanela;
public NovaJanela(){
super("Abrir uma nova janela");
Container tela = getContentPane();
tela.setLayout(null);
abrir = new JButton("Abrir");
abrir.setBounds(100,50,80,20);
abrir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
segundajanela = new Inicial();
segundajanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
segundajanela.setVisible(true);
setVisible(false);
dispose();}});
tela.add(abrir);
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);}
public static void main(String args[]){
NovaJanela app = new NovaJanela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
private class Inicial extends JFrame{
JButton sair;
private Inicial(){
super("Menu Principal...");
Container tela = getContentPane();
tela.setLayout(null);
sair = new JButton("Sair");
sair.setBounds(50,50,100,20);
TBsair tsair = new TBsair();
sair.addActionListener(tsair);
tela.add(sair);
setSize(200,200);
setLocationRelativeTo(null);} }
private class TBsair implements ActionListener{
public void actionPerformed(ActionEvent evento){
int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o
programa?","Mensagem de saída",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();}}
} }

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

26 – Uso da Classe JWindow para criar uma Splash Screen

Uma Splash Screen ou tela de splash é uma tela, geralmente retangular e


contendo uma imagem e texto, que permanece no centro da tela do
computador enquanto o aplicativo é iniciado. Seu uso é bem vindo em
aplicativos que necessitam de tempo para reunir todos os recursos necessários
para à sua execução. Quando todos os recursos estão alocados, a tela de
Splash é fechada e a janela principal do aplicativo é exibida.
A escolha de um objeto da classe JWindow para implementar uma tela de
Splash é justificada pelo fato de que janelas criadas a partir dessa classe não
possuem a barra de títulos, os botões de sistema (fechar, minimizar, etc) e a
borda características das demais janelas.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploSplashScreen extends JFrame{
TelaInicial inicio;
JButton botaosair;
public ExemploSplashScreen(){
super("Exemplo de Splash Screen");
Container tela = getContentPane();
tela.setLayout(null);
inicio = new TelaInicial();
inicio.setVisible(true);
botaosair = new JButton ("Sair");
botaosair.setBounds(100,50,100,20);
botaosair.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0); } } );
tela.add(botaosair);
setSize(300, 150);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploSplashScreen app = new ExemploSplashScreen();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
public void principal(){
setVisible(true);}
private class TelaInicial extends JWindow{
public TelaInicial(){
Container tela = getContentPane();
tela.setLayout(new FlowLayout(FlowLayout.LEFT,1,1));
ImageIcon imagem = new ImageIcon("imagens/fundo.gif");
JLabel rotulo = new JLabel(imagem);
tela.add(rotulo);
ActionListener fechar = new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
dispose();
principal();}};
javax.swing.Timer timer = new javax.swing.Timer(5000,fechar);
timer.start();
pack();
setLocationRelativeTo(null);
} }
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

A tela de splash mostrada na figura é exibida por cinco segundos. Decorrido esse
período, ela será fechada e a janela principal do aplicativo será exibida. Vamos
analisar todo o código começando com a classe TelaInicial:

Esta classe estende JWindow, portanto não terá bordas, barra de títulos ou botões de
sistema: private class TelaInicial extends JWindow

Veja as cinco primeiras linhas de seu construtor:


Container tela = getContentPane();
tela.setLayout(new FlowLayout(FlowLayout.LEFT,1,1));
ImageIcon imagem = new ImageIcon("imagens/fundo.gif");
JLabel rotulo = new JLabel(imagem);
tela.add(rotulo);
As primeiras duas linhas obtém uma referência ao painel de conteúdo da janela e
defininem o gerenciador de layout. As duas linhas seguintes carregam a imagem a ser
exibida e fornece o argumento para o construtor da classe JLabel. A imagem será
exibida como parte de um rótulo. A última linha adiciona o rótulo à janela.
Em seguida temos a instância da classe ActionListener.
ActionListener fechar = new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
dispose();
principal();}};
Quando o método actionPerformed dessa classe é chamado, nós ocultamos a tela de
splash, a liberamos da memória e efetuamos uma chamada ao método principal da
classe principal.
Para disparar o método actionListener, fazemos uso de um timer:
javax.swing.Timer timer = new javax.swing.Timer(5000,fechar);
timer.start();
Este timer está ajustado para cinco segundos, mas você pode alterar este valor de
acordo com sua finalidade.
As duas últimas linhas da classe TelaInicial, redimensionam a janela de acordo com o
tamanho da imagem usada e posicionam a janela no centro da tela.
pack();
setLocationRelativeTo(null);
A tela do splash (TelaInicial) é chamada a partir da classe principal por meio das
seguintes instruções: inicio = new TelaInicial();
inicio.setVisible(true);
E, para finalizar, eis o método principal:
public void principal(){
setVisible(true);}

O único proposito deste método é tornar a janela principal visível, uma vez que não
podemos acessa-la a partir da classe TelaInicial.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

27 – Banco de Dados Relacionais

27.1 – O que é um Banco de Dados?

Um banco de dados típico é formado por uma ou mais Tabelas. As tabelas, por
sua vez, são formadas por COLUNAS e LINHAS. As COLUNAS, também
chamadas de CAMPOS, servem para dar nome ao espaço reservados a
determinada informação. Já as LINHAS de uma tabela, também chamadas de
REGISTROS ou TUPLAS. São espaços reservados para a informação a ser
armazenada.
No exemplo apresentado em seguida temos três CAMPOS, de nome ID,
NOME e TELEFONE. Os campos dão nome a cada coluna do Banco de Dado
se indicam qual informação será armazenada em cada coluna. Três LINHAS,
contendo informações de três pessoas. Note que, enquanto os campos são
únicos e não se repetem, as linhas são em quantidade quase infinita e podem
se repetir total ou parcialmente.

Nota: Neste caso em particular, as informações do campo ID são geradas pelo próprio
SGBD por meio da autonumeração; portanto, não são inseridas pelo usuários e
também não se repetem.
ID NOME TELEFONE
1 Tulio Maravilha 1234-5678
2 Otavio Mesquita 1234-6789
3 Luiz Pedro 1234-9658
► (AutoNumeração) |
O conjunto apresentado forma uma tabela de nome CADASTRO que, por sua vez,
forma o banco de dados AGENDA.

Um Banco de Dados típico é criado a partir das seguintes etapas:

1) Cria-se um banco de dados, dando um nome a ele. Esse nome vai ajudá-lo a
identificar o tipo de informação que ele contêm. Exemplo de nomes para Banco de
Dados: colecoes, vendas, cadastro, etc. Evitamos o uso de palavras acentuadas e
separadas por espaço, tendo em vista a maior compatibilidade possível. Se necessário
usar mais de uma palavra para nomear o banco de dados, separe-as pelo caractere
UNDERSCORE (sublinhado), como em seguida: Departamento_Pessoal.

2) e 3) Cria-se uma ou mais tabelas, definindo para cada uma delas o nome de cada
coluna e o tipo de dados que ela armazenará. Usando como exemplo, o banco de
dados Departamento_Pessoal, podemos criar as tabelas funcionarios, imposto,
ponto eletronico. Aqui também vale a regra de evitar acentuação na nomeação das
tabelas e seus campos, bem como separar palavras pelo caractere UNDERSCORE
(sublinhado).

4) Alimenta-se o banco de dados com os registros, seja por digitação ou outro


processo: mecânico, óptico, magnético, etc. São esses registros que formarão as
linhas da tabela. Os dados inseridos podem e devem usar acentuação e palavras com
espaço em branco entre si.

1 - Nome do 2 - Nome da 3 - Nome e tipo de 4 – Entrada de


Banco de Dados Tabela dados das COLUNAS Dados(digitação, etc)

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

27.2 – Banco de Dados Relacionais

Os Bancos de Dados atuais permitem que se criem relacionamentos entre as


tabelas, os quais eliminam campos redundantes, e como conseqüência
imediata, temos a redução do número de campos de cada tabela, redução no
tempo de entrada de dados e mais velocidade no processamento.

Banco de Dados VENDAS


Tabela Clientes Tabela Pedidos

Número do Cliente Número do Pedido


Nome do Cliente Número do Cliente
Endereço Descrição do Pedido
Telefone Total

Note que cada cliente pode fazer mais de um pedido, mais cada pedido só
pode estar relacionado a um cliente. O campo que está sendo usado para
relacionar uma tabela à outra é o Número do Cliente. Se este vínculo não
fosse criado, não haveria como saber qual cliente é determinado pedido, a não
ser que incluíssemos em cada pedido todos os dados do cliente. Com o uso
dos relacionamentos, este procedimento é desnecessário.

Os tipos de relacionamentos mais comuns são:

UM para MUITOS – Exemplo: um único cliente pode fazer vários pedidos, um


único vendedor pode emitir vários pedidos, um único professor pode lecionar
várias disciplinas.

UM para UM – Exemplo: um cliente e atendido por um único vendedor.

MUITOS para MUITOS – Exemplo: vários alunos podem ser matriculados em


vários cursos e os vários cursos podem ter matriculados vários alunos.

27.3 – BD x SGBD

Os softwares usados para criar e gerenciar (armazenar e manupilar) os dados


de uma empresa são conhecidos por SGBD – SISTEMA GERENCIADOR DE
BANCO DE DADOS. O SGBD adotado por nós é o ACCESS, que faz parte do
pacote comercial OFFICE da empresa MICROSOFT. Embora os exemplos
desta apostila utilizarem a versão 2000, versões anteriores e recentes também
poderão ser usadas sem problemas, observam as pequenas diferenças nas
telas que ilustram os tópicos. A apostila não faz o estudo específico sobre o MS
ACCESS, vamos apenas nos limitar a abordar apenas a parte que nos
interessa, que é a criação do Banco de Dados. Seu gerenciamento será feito
em Java e SQL.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

27. 4 – Índices

Um índice não é uma característica do Modelo Relacional, mas sim uma


estratégia de otimização de consulta para implementações desse modelo. Isso
acontece porque o Modelo Relacional é um modelo teórico, porém quando
transformado em uma implementação as suas operações (tanto da álgebra
quanto do cálculo) exigem um tempo de busca. Se os dados estiverem
ordenados de uma forma ideal, esse tempo de busca pode ser bastante
reduzido.
Os índices funcionam então como catálogos organizados de forma a beneficiar
certo tipo de consulta. É possível imaginar que uma tabela seria associada a
quantidade máxima de índices, porém isso traria muitos gasto de inserção e
alteração. Por isso, em uma implantação de um banco de dados, são
escolhidos os indíces mais adequados. Normalmente a chave primária é um
índice.
O limitador é imposto exclusivamente pela ferramenta de software utilizada.
Sendo assim, para a recuperação dos dados é necessário a existência de
mecanismos que facilitem a consulta, proporcionando uma perfomance
aceitável para a mesma. Para isso, os sistemas de bancos de dados
relacionais criam índices das tabelas, sendo que esses índices são atualizados
constantemente.
Caso o índice se corrompa por algum motivo, é possível que pesquisas
possam retornar resultados não desejados ou que inserções de chaves
duplicadas aconteçam. Nesse caso o banco de dados será corrompido
também. Os sistemas de bancos (bases) de dados possuem mecanismos de
evitar que esses eventos ocorram como também possibilitam a recuperação
dos índices e consistência da tabela caso eles ocorram.

Tipos de Índices

De acordo com as necessidades de busca, os tipos de índices ideais variam.


Alguns bancos implementam um tipo, outros vários.

Um indice em árvore (e existem vários tipos de árvore) ordena os dados e


permite buscas razoavelmente rápidas para elementos específicos e busca
bastante rápidas para intervalos. O índice em árvore é geralmente baseado na
idéia da Árvore Binária, porém adaptada para atender as características de
usar Memória de . O tipo mais comum é a Árvore B.

Um índice em hash organiza os dados codificando-os e mapeando-os em


posições de array. São uma forma extremamente rápida de encontrar
elementos específicos, mas praticamente inúteis para responder um intervalo
de valores.

Um índice binário é indicado quando o campo indexado tem um pequeno


número de valores que indicam a categoria da tupla, por exemplo o campo
sexo (M,F), que é constantemente usada em consultas. Nesse caso, é criada
uma lista dos elementos de cada tipo.
Outros tipos de índices são: R-Tree, GiST, etc.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

27.5 – Criando Banco de Dados

Antes de criar o Banco de Dados, crie uma pasta no raiz C:\, chamada Agenda.

Execute o MS Access, marque a opção BANCO DE DADOS VAZIO DO


ACCESS e clique em OK (Figura1)

Figura1

No campo Salvar Em, localize a pasta C:\Agenda. Em Nome do Arquivo, digite


Agenda e clique no botão Criar (Figura2).

Figura2
Com este procedimento o banco de dados Agenda.mdb, precisa de ao menos
uma tabela para pode armazenar informações. A tabela pode ser criada com
ACCESS, Java e SQL. Não feche o MS ACCESS.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

27.6 – Criando Tabelas no MS ACCESS

Apesar de poder criar e gerenciar tabelas exclusivamente com Java e SQL, é


importante você conhecer o processo de criação de tabelas no MS ACCESS.

Confira se na coluna Objetos a opção Tabela está selecionada.

Selecione a opção Criar Tabela No Modo de Estrutura.

Depois de todos os passos anterior ser executado, Clique no botão Novo.

Selecione a opção Modo de Estrutura.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Na tela seguinte crie os campos para a tabela.

Depois de digitar estas informações, crie a Chave Primária, clique no campo


Nome,
depois clique no ícone da Chave Primária,

depois de clicar na chave primária o campo nome receberá a

chave,

Após terminar os passos anterior, salve no Menu Arquivo, Salvar ou clique no


ícone do Disquete, e coloque o nome da tabela de Cadastro e clique em OK.

Agora a tabela Cadastro está criada e pronta para receber dados, seja pelo ACCESS,
Java ou SQL.

28 – O que SQL?

SQL – Structured Query Language / Linguagem de Consulta Estruturada é


exatamente isto: uma linguagem. E como toda linguagem, se presta à
comunicação SQL é uma linguagem de consulta, usada para estabelecer
comunicação com banco de dados, dos mais simples aos mais sofisticados.
Por ser mundialmente aceita como linguagem de consulta a banco de dados,
os que se propõem a aprender SQL, estejam na China, no Brasil ou em
qualquer país do mundo, receberão o mesmo conjunto de informações.
SQL pode ser usada junto com linguagens procedurais, linguagens visuais e
até mesmo com linguagens de script. E de certa forma, as linguagens de script
serviram para dar um novo impulso ao interesse por SQL. Mas não é só isto.
Um servidor de SQL faz com que a linguagem vá muito além do que a forma
embutida pode oferecer.

28.1 – Como usar SQL?


As formas usuais de executar instruções SQL são:

EMBUTIDA – SQL pode ser chamada de dentro de uma linguagem


(procedural, visual ou de script).

WIZARDS – Rotinas embutidas nos SGBDs que permitem a construção de


complexas instruções SQL, aparentes ou não, até mesmo por quem não
conhece a linguagem.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

RAD – Geradores de Aplicações são mecanismos de geração automática de


rotinas ou até mesmo a geração de aplicações completas independentes do
mecanismo gerador.
IDE – Os Ambientes Integrados de Desenvolvimento facilitam o uso do SQL
por permitirem que com o uso de interfaces gráficas e wizards, as instruções
sejam montadas com mais facilidade e rapidez.

28.2 – Tipos de Dados

A tabela seguinte serve para identificar o tipo de dados do MS ACCESS e sua


relação com o tipo de dados SQL:

MS ACCESS SQL
Texto CHAR
CHAR(n)
VARCHAR
VARCHAR(n)
Sendo “n” um número que identifica o comprimento do campo, ou seja, qual o limite
máximo de caracteres que pode ser armazenado.
Se não for especificado, será igual a 255.
Memorando TEXT
Formato MS ACCESS Formato SQL
BYTE
Byte SMALLINT
Inteiro INTEGER
Inteiro Longo REAL
Número Simples FLOAT
Duplo UNIQUEIDENTIFIER
Código de Replicação DECIMAL ou NUMERIC
Decimal DECIMAL(n) ou NUMERIC(n)
DECIMAL(n,d) ou NUMERIC(n,d)
Sendo “n” é o número máximo de caracteres permitido no campo,
“d” é o número de casas decimais.
Data/Hora DATE, TIME, DATETIME
Moeda MONEY ou CURRENCY
AutoNumeração COUNTER
Sim/Não BIT

Tipos Numéricos

Diferença entre cada um dos tipos numéricos diz respeito à precisão e


limitações de valores de cada um. A tabela seguinte serve para esclarecer o
assunto:

ACCESS SQL Tamanho de Armazenamento


Byte BYTE 1 byte
Inteiro (Integer) SMALLINT 2 bytes
Inteiro Longo (Long) INTEGER 4 bytes
Simples (Single) REAL 4 bytes (vírgula flutuante de precisão simples)
Duplo (Double) FLOAT 8 bytes (vírgula flutuante de precisão duplo)
Decimal DECIMAL 14 bytes

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

29 – ODBC/JDBC

29.1 – O que é um Driver?


Driver é um tipo de software que tem por finalidade permitir a comunicação
entre sistemas. Os drivers geralmente são fornecidos pelos fabricantes, mas é
comum encontrar drivers genéricos distribuídos com o sistema operacional e
também drivers de terceiros, gratuitos ou não.
O que se espera de um driver é a máxima compatibilidade e velocidade sem
degradar a performance do sistema. Um driver tem que fazer o seu papel de
forma transparente e sem que seja criado um gargalo.

29.2 – O que é ODBC?


ODBC – Open DataBase Connectivity / Padrão Aberto de Conectividade a
Banco de Dados é uma interface com grande disponibilidade de drivers para
acesso a banco de dados. ODBC é instalado junto com o MS ACCESS, mas
também pode ser instalado a partir do MDAC – Mircrosoft Universal Data
Access / Componente Microsoft de Acesso Universal a Banco de Dados.
Para acessar o Administrador de Fonte de Dados ODBC, basta acessar o
Painel de Controle.
Importante: É altamente recomendável que você instale ou atualize o MDAC.
Muitos erros de conexão encontrados, foram corrigidos após a instalação ou
atualização deste componente. Você baixar no www.microsoft.com.br, ou pelo
instalador do ORACLE LITE.

29.3 – O que é JDBC?


JDBC – Java DataBase Connectivity / Padrão Java de Conectividade a
Banco de Dados é a interface que possibilita às aplicações Java acessarem
bancos de dados relacionais e demais arquivos de dados. É atualmente a
forma mais prática e rápida para conectar uma aplicação Java a um arquivo de
dados.

29.4 – JDBC / ODBC


Embora um programa em Java possa utilizar diretamente a interface ODBC
para acessar arquivos de dados, este procedimento é trabalhoso e elimina a
portabilidade da aplicação. Mas onde conseguir a ponte JDBC-ODBC? Já
vimos que os drivers ODBC são instalados com o MS ACCESS. E o JDBC?
Você não precisa se preocupar com a instalação do JDBC e da ponte JDBC-
ODBC. No Java2 essas interfaces fazem parte do pacote e são instalados junto
com o JDK/SDK 1.2.X em diante. Até o Java 1(JDK 1.1.X), havia necessidade
de baixar e instalar em separado o JDBC e a ponte JDBC-ODBC.

29.5 – DriverManager
O DriverManager é uma classe pacote Java.sql e serve para:
Fazer a conexão com o banco de dados;
Gerenciar o conjunto de drivers JDBC correspondente;
Controlar o Login;
Controlar as mensagens entre o banco de dados e o driver.
Um programador que utiliza um driver não precisa saber como ele foi
codificado, mas deve saber como carregá-lo para que ele se registre no
DriverManager.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

29.6 – Como Criar Fontes de Dados ODBC


As telas seguintes mostram passo-a-passo como criar uma fonte de dados
ODBC, agora vejamos este processo em detalhes:

1 . Vá em Iniciar -> Configurações -> Painel de Controle e dê um duplo-clique


no ícone Fonte de Dados ODBC (32 Bits).

2. Selecione a aba NFD de Sistema / Fonte de Dados de Sistema, dê um


clique no botão Adicionar, conforme mostra a figura1.

Figura1

3. Selecione o Driver para Microsoft Access (*.mdb) e dê um clique no botão


Concluir, conforme mostra a figura2.

Figura2

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

4. Dê um clique no botão Selecionar, conforme mostra a figura3

Figura3

5. Localize na pasta C:\Agenda e o arquivo Agenda.mdb e dê um clique no


botão Ok, conforme mostra a figura4.

Figura4

6. Digite a palavra Agenda no campo Nome da Fonte de Dados e em seguida


dê um clique no botão OK, conforme mostra a figura5.

Figura5

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

7. A Fonte de Dados está criada e você já pode visualizá-la em Fontes de


Dados de Sistema, conforme mostra a figura6. Dê um clique no botão OK
para fechar a janela do Administrador de Fonte Dados ODBC

Figura6

30 – SQL – Java & Banco de Dados - Considerações Iniciais

Este é o tópico principal de nossa apostila. É aqui que aprenderemos, na


prática, a fazer conexões com banco de dados usando Java e SQL. Verifique
se você possui os requisitos necessários para prosseguir:

Um banco de dados com o nome Agenda.mdb, criado conforme o tópico 27.5.

Uma fonte de dados ODBC com o nome Agenda, criado conforme o tópico
29.6.

30.1 – Anatomia de uma Conexão e Testando a Conexão

Vejamos a anatomia de uma classe que implementa uma conexão com banco
de dados:

1. import javax.swing.*;
2. import java.awt.*;
3. import java.awt.event.*;
4. import java.sql.*;

Linha 1, 2, 3 e 4 importa os pacotes de classes que implementa a criação de


janelas, botões, eventos dos botões e o acesso ao banco de dados com o
Java. Os pacotes principais da linguagem são importados default. Pacotes de
uso específico devem ter esta importação explícita nas linhas de codificação da
classe.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

5. public class TestaConexao extends JFrame{


6.JButton botao;
7.public TestaConexao(){
8. super("Testando a Conexão...");
9. Container tela = getContentPane();
10. setLayout(null);
11. botao = new JButton("Verificar Conexão");
12. botao.setBounds(50,50,150,20);
13. botao.addActionListener(new ActionListener(){
14. public void actionPerformed(ActionEvent e){

Linha 15 a 24 – Na linguagem Java existe um método para notificação de


erros. Caso o bloco de comandos situado entre as chaves da linha 15 a 24
retorne erro, ele será capturado pelo catch

Linha 16, 17 e 18 – Criam variáveis com a string de conexão, o nome do


usuário e a senha, se houver. Lembre-se que a fonte de dados é criada em
operação à parte. Se tiver dúvidas sobre criação de fontes de dados, leia
novamente o tópico 29.6.

Linha 19 – Esta linha carrega o driver que será usado pela aplicação Java para
realizar a comunicação com o banco de dados.

Linha 20 – Cria uma conexão de nome con.

Linha 21 – Estabelece a conexão usando os valores das variáveis que foram


declaradas inicializadas nas linhas 16, 17 e 18. Nome de usuário e senha são
opcionais. Por estar dentro de uma instrução try, caso ocorra algum problema
na conexão, programa desvia a execução do código para o bloco catch, que
exibierá a mensagem da linha 22. Não é nem a única nem a forma mais
profissional de tratar exceções, mas é a mais simples e funcional para quem
está dando os primeiros passos em Java.

Linha 22 – Exibe uma mensagem dizendo que a conexão foi estabelecida com
sucesso.

Linha 23 – Fecha a conexão aberta nas linhas 19 e 20.

15. try {
16. String url = "jdbc:odbc:Agenda";
17. String usuario = "";
18. String senha = "";
19. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
20. Connection con;
21. con = DriverManager.getConnection(url,usuario,senha);
22. JOptionPane.showMessageDialog(null,"Conexão
estabelecida","Mensagem do
Programa",JOptionPane.INFORMATION_MESSAGE);
23. con.close();
24. }

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Linha 25 – Captura os erros ocorridos durante a execução do aplicativo. Caso


algo saia errado, será executado o bloco de comandos que está entre as
chaves 26 e 28.

Linha 27 – Exibe uma mensagem de erro quando a conexão com o banco de


dados não for estabelecida.

25. catch(Exception event)


26. {
27. JOptionPane.showMessageDialog(null,"Conexão não
estabelecida","Mensagem do
Programa",JOptionPane.ERROR_MESSAGE);
28. }
29. }});
30. tela.add(botao);
31. setSize(300, 150);
32. setVisible(true);
33. setLocationRelativeTo(null);
34. }
35.public static void main(String args[]){
36.TestaConexao app = new TestaConexao();
37.app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
38.}
39.}

Aplicativo sendo executado, clique no


botão verificar para ver se a conexão
foi estabelecida.

Conexão OK Conexão com erro

30.2 - Criando a Tabela – CREATE TABLE

Podemos criar uma tabela de nome Tabela1 com os campos Campo1


(AutoNumeração), Campo2 (Texto), Campo3 (Memorando), Campo4
(Data/Hora) e Campo5 (Sim/Não). Veja a sintaxe:

CREATE TABLE Tabela1 (Campo1 COUNTER, Campo2 VARCHAR(50),


Campo3 TEXT, Campo4 DATETIME, Campo5 BIT)

Lembrando que os comandos do SQL, devem ser digitados em maiúsculos.

Usando como referência a tabela de TIPOS DE DADOS, você pode criar


tabelas com praticamente qualquer um dos tipos disponíveis no MS ACCESS.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

E não é só isto, além do nome do campo e do tipo de dados, você pode incluir
as seguintes chaves:

NULL – Não rquerido. O campo não precisa conter dados. Se nada for
especificado, NULL será usado como padrão default.

NOT NULL – Requerido. É um campo cuja entrada de dados é obrigatória.

Vamos criar a Tabela2 usando as seguintes informações:

CREATE TABLE Tabela2 (ID COUNTER, Nome VARCHAR(50) NOT NULL,


Tel1 VARCHAR(20) NOT NULL,Tel2 VARCHAR(20) NULL)

Neste exemplo, a digitação do Nome e do Tel1 é obrigatório. Só o segundo


telefone, Tel2, é opcional.

Vamos criar a Tabela3 usando o PRIMARY KEY, (campo chave), que também
pode ser criado na instrução SQL.

CREATE TABLE Tabela3 (ID COUNTER PRIMARY KEY, Nome


VARCHAR(50) NOT NULL, Tel1 VARCHAR(20) NOT NULL,Tel2
VARCHAR(20) NULL)

Quase sempre vamos ter um ou mais campos em nossa tabela, que não
podem se repetir. Exemplos de campos que não podem se repetir: nome,
número de código, matrícula, login e etc. Com a palavra chave UNIQUE,
definimos os campos os campos que não admitem dados repetidos:

CREATE TABLE Tabela4 (ID COUNTER PRIMARY KEY, Nome


VARCHAR(50) NOT NULL UNIQUE, Tel1 VARCHAR(20) NOT NULL,Tel2
VARCHAR(20) NULL)

Obs: Execute o aplicativo ManipulacaoDeTabelas.java e execute a linha


acima, quando você clicar no botão Executar Instrução uma mensagem
confirmando êxito será exibida.

30.3 – Alterando Tabelas (Incluir ou Excluir Campos) ALTER TABLE

Para inserir um novo campo em nossa Tabela2, usamos o seguinte comando:


ALTER TABLE Tabela2 ADD Endereco VARCHAR(50) NOT NULL

Para excluir um campo em nossa Tabela2, usamos o seguinte comando:


ALTER TABLE Tabela2 DROP Endereco

30.4 – Excluir Tabelas – DROP TABLE

Não é muito comum a remoção de uma tabela. Veja o comando:


DROP TABLE Tabela1

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Programa ManipulacaoDeTabelas em execução

Digite a instrução SQL na caixa de texto e clique no botão para executar as


instruções SQL.

OBS: Estamos criando as tabelas dentro do banco de dados Agenda.mdb,


pois na classe privada Manipular, chamamos os procedimentos referente a
banco de dados. Para conferir se as tabelas foram criadas abra o banco de
dados Agenda.mdb pelo MS ACCESS, e verifique se a coluna Objetos a
opção Tabelas esta selecionada e veja se todas que você criou esta nesta
opção.

private void manipular(){


try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate(texto.getText());
JOptionPane.showMessageDialog(null,"Dados Criado Com Sucesso","
Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}

30.5 – Inserindo Dados na Tabela (INSERT)

Agora que vimos como CRIAR, ALTERAR e REMOVER tabelas, vamos ver
como incluir dados em uma tabela já existente. Veja a sintaxe:

INSERT INTO NomedaTabela (Campo1, Campo2, Campo3) VALUES


(‘valor1’,’valor2’,’valor3’)

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Laço If no aplicativo Incluir2.java:

Quando o usuário utiliza campos Sim/Não, o banco de dados trata esses


valores como 1 para sim, 0 para não, para facilitar o usuário, o laço If resgata o
conteúdo que o usuário digitar na caixa de texto Deficiência, pode ser digitado
s ou S, n ou N. Se o usuário digitar s ou S, o laço If armazena na variável result
o valor 1, caso o usuário digite n ou N, o laço If armazena na variável result o
valor 0. O conteúdo da variável result será utilizada na instrução SQL.

if ((t6.getText().equals("s")) || (t6.getText().equals("S")))
result = "1";
else if ((t6.getText().equals("n")) || (t6.getText().equals("N")))
result = "0";

Vamos utilizar o exemplo Inclui2.java, para analisar a sintaxe da instrução


SQL:

st.executeUpdate("INSERT INTO Tabela1 (Nome, Idade, Dn, Sal, Def) VALUES


('"+t2.getText()+"',"+t3.getText()+",#"+t4.getText()+"#,"+t5.getText()+","+result+")");

Os valores se apresentam entre aspas simples se forem do tipo String de


caracteres. Se forem do tipo Número ou Bit (Sim/Não), não precisa de aspas.
Datas e Horas entre o símbolo do sustenido (#), também conhecido como
tralha ou jogo da velha. Valor do Tipo CURRENCY ou MONEY, 36.50 ou
’36,50’, se você usar ponto separador, o MS ACCESS converte em vírgula,
agora se você for usar vírgula, insira o valor entre aspas simples.

Note que temos na tabela Tabela1 um campo Código do Tipo AutoNumeração,


cujo os valores são gerados automaticamente pelo MS ACCESS.

Lembretes:
1. Não inseri dados em campos do tipo COUNTER (AutoNumeração).
2. Atenção com os campos que possuem a chave NOT NULL, pois a inserção
de dados é obrigatória.
3. Também será retornado erro caso você defina um campo como PRIMARY
KEY ou UNIQUE e tente entrar com dados repetidos nestes campos.

Excute também o aplicativo Incluir.java.

30.6 – Consultas (SELECT)

Agora que possuímos tabelas com dados, podemos usar a instrução SELECT
e cláusula WHERE (onde) para consultas a essas tabelas. Cláusula WHERE
perimte que façamos consultas (SELECT), alterações (UPDATE) e exclusões
(DELETE) com o uso de condições para que a ação seja executada.

Aplicativo Consultar.java, veja a instrução SQL, vai listar listar todos os


registro da tabela Tabela1

SELECT * FROM Tabela1

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Aplicativo Consultar2.java, veja a instrução SQL, vai listar todos os registros


da tabela Cadastro.

SELECT * FROM Cadastro

Operadores que podem ser usados com WHERE

= igual a
<> diferente de
< menor que
<= menor que ou igual a
> maior que
>= maior que ou igual

30.7 – Consultas Avançadas

O uso do NOT- Se usarmos NOT após a cláusula WHERE, vamos inverter a


função do operador. Veja o exemplo só retorna a verdadeiro se o campo Cód
tiver valores menor que 5: Veja aplicativo Consultar3.java.

SELECT * FROM Tabela1 WHERE NOT Cod>5

O uso do LIKE – Junto com WHERE, LIKE, torna a manipulação de um banco


de dados desafiador. Veja o aplicativo Consultar4.java, retorna todos os
registro que tem sobre nome Silva.

SELECT * FROM Tabela1 WHERE Nome LIKE '%Silva%'

Outros exemplos:
Retorna todos os registros que possuam a string João no início do campo:

WHERE Nome LIKE ‘%João’

Retorna todos os registros que possuam a string João no final do campo:

WHERE Nome LIKE ‘João%’

Uso de Operadores Lógicos – Podemos usar operadores lógicos AND (E),


OR (OU) para melhorar ainda mais nossas operações de banco de dados.

Exemplo Consultar5.java, listar todos os registros que o salário é menor ou


igual a 500 e a data de nascimento menor que 01/01/1978, vai listar todos que
são de 1978.

SELECT * FROM Tabela1 WHERE Sal <=500 AND Dn < #01-01-1979#

Exemplo Consultar6.java, listar todos registros que o sobre nome tenha Silva
e todos que o salário seja menor que 500.

SELECT * FROM Tabela1 WHERE Nome LIKE '%Silva%' OR sal < 500

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

A Função IsNull – Retorna os campos que não possuem dados. Lista todos os
campos que estão em branco. Exemplo uma lista de alunos, que nem todos os
alunos possuem telefone. Essa instrução lista esse campos em branco:

WHERE InNull(Telefone)

No aplicativo Consultar7.java, será consultada as duas tabelas e será exibido


todos os registros das duas. Cada um correspondente ao seu nome.

SELECT * FROM Tabela1,Cadastro WHERE


Tabela1.Nome=Cadastro.Nome
Consultas especificas

Como podemos verificar no aplicativo Consultar8.java, nós podemos fazer uso


de uma consulta individual. Onde você digita o Código e clicando no botão
Consultar Registro, os campos sobre aquele registro é visualizado.Veja:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Consultar8 extends JFrame{
JButton botao;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
String result;
int num;
public Consultar8(){
super("Inclusão de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Código: "); t1 = new JTextField(5);
l2 = new JLabel("Nome: "); t2 = new JTextField(50);
l3 = new JLabel("Idade: "); t3 = new JTextField(2);
l4 = new JLabel("Data Nasc.: "); t4 = new JTextField(10);
l5 = new JLabel("Salário: "); t5 = new JTextField(15);
l6 = new JLabel("Deficiência: "); t6 = new JTextField(5);
l1.setBounds(20,30,80,20); t1.setBounds(100,30,150,20);
l2.setBounds(20,70,80,20); t2.setBounds(100,70,300,20);
l3.setBounds(20,110,80,20);t3.setBounds(100,110,30,20);
l4.setBounds(20,150,80,20);t4.setBounds(100,150,100,20);
l5.setBounds(20,190,80,20);t5.setBounds(100,190,70,20);
l6.setBounds(20,230,80,20);t6.setBounds(100,230,70,20);
botao = new JButton("Consultar Registro"); botao.setBounds(110,270,150,20);
tela.add(l1);tela.add(t1);
tela.add(l2);tela.add(t2);
tela.add(l3);tela.add(t3);
tela.add(l4);tela.add(t4);
tela.add(l5);tela.add(t5);
tela.add(l6);tela.add(t6);
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE
Cod="+t1.getText());
rs.next();
t2.setText(rs.getString("Nome"));
t3.setText(rs.getString("Idade"));
t4.setText(rs.getString("Dn"));
t5.setText(rs.getString("Sal"));
num=Integer.parseInt(rs.getString("Def"));
if (num==1)
result = "Sim";
else if (num==0)
result = "Não";
t6.setText(result);
st.close();
con.close();
}
catch(Exception event) {
JOptionPane.showMessageDialog(null,"Conexão não
estabelecida \nPessoa não encontrada","Mensagem do
Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(450, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Consultar8 app = new Consultar8();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

Vamos analisar o código do botão Consultar Registro:

Cria os objetos que permitem a realização de consultas SQL. Statement


permite a execução das instruções SQL, enquanto ResultSet armazena o
resultado na janela:

Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE
Cod="+t1.getText());

Invoca o método createStatement de Connection para obter um objeto que


implementa a interface Statement. Agora podemos utilizar st para consultar o
banco de dados:

Statement st = con.createStatement();

Realiza a consulta que será feita pelo campo Código, chamando o método
executeQuery de Statement:

ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE


Cod="+t1.getText());

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Posiciona no primeiro Registro:

rs.next();

Exibe dentro das caixas de texto, as informações sobre o código pesquisado:

t2.setText(rs.getString("Nome"));
t3.setText(rs.getString("Idade"));
t4.setText(rs.getString("Dn"));
t5.setText(rs.getString("Sal"));

Resgata o valor do campo Def, converte esse valor para inteiro e armazena na
variável inteira num, declarada no início do aplicativo:

num=Integer.parseInt(rs.getString("Def"));

Utiliza o laço IF para condição, que verifica se o valor da variável num, for igual
a 1, a sentença é verdadeira, logo o conteúdo a ser exibido na caixa de texto
será Sim, caso contrário se o valor for igual a 0, logo a sentença será falsa e o
conteúdo a ser exibido na caixa de texto, será Não.

if (num==1)
result = "Sim";
else if (num==0)
result = "Não";
t6.setText(result);

Caso o usuário entre com o código inválido, o aplicativo exibirá uma mensagem
de texto, informando ao usuário a inválidade.

Aplicativo Consultar8.java em execução.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Mensagem de erro quando o código inválido é informado.

Consultas com ORDER BY

Podemos optar por exibir os dados ordenados por um dos campos da tabela:

SELECT * FROM Tabela2 ORDER BY Nome

ASC ou DESC

Se não for especificado a classificação da nossa ordenação, ela será ASC


(ascendente) por default. Para a ordenação decrescente, usamos DESC. Mais
de uma classificação pode ser utilizada bastar utilizar vírgulas.

SELECT * FROM Cadastro ORDER BY Nome, Telefone_1 ASC

30.8 – Atualizando Dados (UPDATE)

A instrução UPDATE, serve para realizar atualizações nos registro da tabela.


Sintaxe:

UPDATE NomeDaTabela SET Campo=’NovoValor’ WHERE


Campo=’ValorAntigo’

Atualização de registro pelo código, na Tabela2, foi selecionado o código 1


para realizar as alterações veja:

UPDATE Tabela2 SET Nome='Pedro Carlos da Silva’, Idade=29,Dn=#23-05-


1978#,Sal=380.00,Def=0 WHERE Cod=1

No campo Sal, se você for adicionar o valor com vírgula coloque o valor entre
aspas simples ex: ‘380,00’

No campo Def, onde os valores retornados para a tabela é sim ou não, 1


corresponde a Sim, 0 corresponde a não.

No campo Dn, onde os valores a serem incluídos são datas deve ser usar #23-
05-2004#.

String utilizam aspas simples, e números não utilizam aspas simples.


Só que nesse aplicativo foi feito um laço IF, para dizer que quando for digitando
s ou S, a variável result recebe o valor 1, e exibe na caixa de texto o conteúdo
sim. Caso for digitado n ou N, a variável result recebe o valor 0, e exibe na
caixa de texto o conteúdo não.

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

if ((t6.getText().equals("s")) || (t6.getText().equals("S")))
{result = "1";
t6.setText("Sim");}
else if ((t6.getText().equals("n")) || (t6.getText().equals("N")))
{result = "0";
t6.setText("Não");}

E na isntrução SQL foi colocado a variável result, que contém o valor 1 ou 0.

st.executeUpdate("UPDATE Tabela2 SET


Nome='"+t2.getText()+"',Idade="+t3.getText()+",Dn=#"+t4.getText()+"#,Sal
="+t5.getText()+",Def="+result+" WHERE Cod="+t1.getText());

Exemplo Alterar2.java, alterar da Tabela2 todos os salários para o valor que o


usuário espercificar

UPDATE Tabela2 SET Def="+t1.getText()

30.9 – Excluindo Dados (DELETE)

Para excluir dados de uma linha inteira de uma tabela, usamos a seguinte
instrução DELETE:

DELETE FROM NomeDaTabela WHERE Campo=’Valor’

Por exemplo para excluir todos os registro da tabela Tabela2, aplicativo

Excluir.java: DELETE * FROM Tabela2

Excluindo Registro pelo Código, aplicativo Excluir2.java:

DELETE FROM Tabela2 WHERE Cod= t1.getText()

Excluindo com operadores lógicos:

DELETE FROM Tabela2 WHERE Cod>3 AND sal<500

30.10 – Exibindo Dados em uma Lista

Até agora estamos visualizando nossas listagem no console. Agora vamos ver
uma listagem feita na própria janela. Veja o aplicativo Relatorio.java:

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;

public class Relatorio extends JFrame{


private Connection con;
private JTable tabela;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

public Relatorio(){
super("Agenda - Nomes" );
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Conexão não
estabelecida","Mensagem do Programa",
JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(600,200);
setVisible(true);
}
public static void main(String args[]){
Relatorio app = new Relatorio();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buscaTabela(){
Statement st;
ResultSet res;
try{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("SELECT * FROM Cadastro ORDER BY Nome");
res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane( tabela );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex){
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){
Vector LinhaAtual = new Vector();
try{
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

break;
case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
}
Aplicativo Relatorio.java em execução

A primeira vista o código do aplicativo Relatorio.java pode parecer um pouco


complicado, mas tenho certeza de que após a análise, você perceberá que é
só uma questão de tempo até estar totalmente familiarizado com os novos
objetos usados no exemplo:

1. Declara tabela como instância do objeto JTable: private JTable tabela;

2. Classe pública Relatório é a responsável pela criação da conexão com o


banco de dados, incluindo o tratamento de erros:

public class Relatorio extends JFrame{


private Connection con;
private JTable tabela;
public Relatorio(){
super("Agenda - Nomes" );
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Conexão não
estabelecida","Mensagem do Programa",
JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(600,200);
setVisible(true);
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

3. O método buscaTabela é o responsável por criar a tabela que será inserida


na janela:

buscaTabela();

4. Cria os objetos que permitem a realização de consultas SQL, Statement


permite a execução das instruções SQL, enquanto o ResultSet armazena o
resultado da consulta:

Statement st;
ResultSet res;

5. Cria os vetores cabecalho e linha para, armazenar respectivamente as


colunas e linhas que irão compor nossa tabela:

Vector cabecalho = new Vector();


Vector linhas = new Vector();

6. Invoca o método createStatemente de Connection para obter um objeto


que implementa a interface Statement. Agora podemos utilizar st para
consultar o bando de dados:

st = con.createStatement();

7. Realiza a consulta em ordem alfabética chamando o método executeQuery


de Statement:

res = st.executeQuery("SELECT * FROM Cadastro ORDER BY Nome");

8. Posiciona no primeiro registro:

res.next();

9. Armazenaa informações sobre o banco de dados e a consulta, que poderão


ser usadas pela conexão ou pelo desenvolvedor:

ResultSetMetaData rsmd = res.getMetaData();

10. Inicia um loop. O objeto das linhas seguintes é montar a tabela com seus
cabeçalhos:

Utiliza o método rsmd.getColumnCount(), que informa quantos registros


compõem a tabela, e monta o cabeçalho, adicionando os títulos (Nome, Idade,
Sexo e etc) a cada coluna do cabeçalho:

for (int i = 1; i <= rsmd.getColumnCount(); ++i)


cabecalho.addElement(rsmd.getColumnName(i));

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Adiciona as linhas e o cabeçalho a tabela, cria barras de rolagem se


necessário, adiciona as barras de rolagem a janela, com o painel centralizado e
usa o método validate(), para validar os dados.

do{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane( tabela );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();

11. Criamos mais um vetor e um loop, com a finalidade de percorrer a tabela,


usando as informações obtidas do loop anterior:

private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){


Vector LinhaAtual = new Vector();
try {
for (int i = 1; i <= rsmd.getColumnCount(); ++i)

12. Por fim, estrutura switch…case verifica o tipo de dados e utilize a forma
mais apropriada para obtê-los (getString() para textos, getDate() para
data/hora, getLong() para números):

switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));
break;
case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;

30.11 – Exibindo relatório com filtro e chamando outra janela

No aplicativo Relatorio1.java, temos uma janela que exibe um rótulo, uma


caixa de texto e um botão, quando o usuário digita um nome, e clica no botão
Exibir Relatório, o aplicativo retorna uma outra janela exibindo os nomes.
Caso o usuário não digite nenhum nome, e clique no botão Exibir Relatório, o
aplicativo exibe todos os nomes da tabela. Veja o aplicativo:

Primeira janela do aplicativo Relatorio1.java

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Verificar quais Tipos de Dados podem ser utilizados para exibir a saída de
dados da tabela.

Tipos de Dados Verificar Saída


String (Caractere) Types.VARCHAR rs.getString
Integer (Inteiro) Types.INTEGER new Long(rs.getLong)
DATETIME(Data e Hora) TIMESTAMP rs.getDate
Números Flutuantes Types.NUMERIC rs.getDouble
BIT (Lógico) Types.BIT rs.getByte
Double (8 bytes) Types.DOUBLE Long(rs.getLong)
Real (4 bytes) Types.REAL Long(rs.getLong)
FLOAT(Double) Types.FLOAT Long(rs.getLong)

Exemplo Relatorio2.java, exibe na janela os registros referentes a cada


pessoa das duas tabelas. Resgata os dados da Tabela1 e da tabela Cadastro,
utiliza a cláusula WHERE, para verificar se o nome da pessoa nas duas tabelas
são iguais, e exibe os dados destas pessoas na janela.

Veja a instruação SQL:

1º Passo: Seleciona os campos de cada tabela:

SELECT Tabela1.Cod,Tabela1.Nome,Tabela1.Idade,Tabela1.Dn,Tabela1.Sal,
Tabela1.Def,Cadastro.Telefone_1,Cadastro.Telefone_2,Cadastro.Celular

2º Passo: Atriubui quais tabelas serão utilizadas:

FROM Cadastro, Tabela1

3º Passo: Utiliza a cláusula WHERE para comparar os nomes nas tabelas:

WHERE Cadastro.Nome=Tabela1.Nome

Tela do aplicativo Relatorio2.java em execução

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Aplicativos resolvidos em Ordem Alfabética:

mport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Alterar extends JFrame{
JButton botao, botao2;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
String result;
int num;
Alterar(){
super("Alteração de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Código: "); t1 = new JTextField(5);
l2 = new JLabel("Nome: "); t2 = new JTextField(50);
l3 = new JLabel("Idade: "); t3 = new JTextField(2);
l4 = new JLabel("Data Nasc.: "); t4 = new JTextField(10);
l5 = new JLabel("Salário: "); t5 = new JTextField(15);
l6 = new JLabel("Deficiência: "); t6 = new JTextField(5);
l1.setBounds(20,30,80,20); t1.setBounds(100,30,150,20);
l2.setBounds(20,70,80,20); t2.setBounds(100,70,300,20);
l3.setBounds(20,110,80,20);t3.setBounds(100,110,30,20);
l4.setBounds(20,150,80,20);t4.setBounds(100,150,100,20);
l5.setBounds(20,190,80,20);t5.setBounds(100,190,70,20);
l6.setBounds(20,230,80,20);t6.setBounds(100,230,70,20);
botao = new JButton("Consultar Registro"); botao.setBounds(20,270,150,20);
botao2 = new JButton("Alterar Registro"); botao2.setBounds(200,270,150,20);
tela.add(l1);tela.add(t1);
tela.add(l2);tela.add(t2);
tela.add(l3);tela.add(t3);
tela.add(l4);tela.add(t4);
tela.add(l5);tela.add(t5);
tela.add(l6);tela.add(t6);
tela.add(botao);tela.add(botao2);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela2 WHERE
Cod="+t1.getText());
rs.next();
t2.setText(rs.getString("Nome"));
t3.setText(rs.getString("Idade"));
t4.setText(rs.getString("Dn"));
t5.setText(rs.getString("Sal"));
num=Integer.parseInt(rs.getString("Def"));
if (num==1)
result = "Sim";
else if (num==0)
result = "Não";
t6.setText(result);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nPessoa
não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
botao2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
if ((t6.getText().equals("s")) || (t6.getText().equals("S")))
{result = "1";
t6.setText("Sim");}
else if ((t6.getText().equals("n")) || (t6.getText().equals("N")))
{result = "0";
t6.setText("Não");}

String url = "jdbc:odbc:Agenda";


String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate("UPDATE Tabela2 SET
Nome='"+t2.getText()+"',Idade="+t3.getText()+",Dn=#"+t4.getText()+"#,Sal="+t5.getText()+",Def
="+result+" WHERE Cod="+t1.getText());
JOptionPane.showMessageDialog(null,"Registro Alterado com Sucesso","Mensagem
do Programa",JOptionPane.INFORMATION_MESSAGE);
t1.requestFocus();
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nPessoa
não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(450, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Alterar app = new Alterar();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Alterar2 extends JFrame{
JButton botao;
JLabel l1;
JTextField t1;
Alterar2(){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

super("Alteração de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Entre com o valor do novo salário: ");
t1 = new JTextField(10);
l1.setBounds(20,30,250,20); t1.setBounds(20,50,80,20);
botao = new JButton("Alterar Valores"); botao.setBounds(150,100,150,20);
tela.add(botao);
tela.add(l1);tela.add(t1);
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate("UPDATE Tabela2 SET Def="+t1.getText());
JOptionPane.showMessageDialog(null,"Registros Alterado com Sucesso","Mensagem
do Programa",JOptionPane.INFORMATION_MESSAGE);
t1.requestFocus();
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nPessoa
não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(450,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Alterar2 app = new Alterar2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Consultar extends JFrame{
String result;
public Consultar(){
super("Consulta de Registros");
Container tela = getContentPane();
tela.setLayout(null);
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1");
while (rs.next()){
System.out.println("Codigo: "+rs.getString("Cod")+" ");
System.out.println("Nome: "+rs.getString("Nome")+" ");
System.out.println("Idade: "+rs.getString("Idade")+" ");
System.out.println("Data Nasc.: "+rs.getString("Dn")+" ");
System.out.println("Salario: "+rs.getString("Sal")+" ");
System.out.println("Deficiencia: "+rs.getString("Def")+" ");
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar app = new Consultar();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Consultar2 extends JFrame{
String result;
JTable tabela;
public Consultar2(){
super("Consulta de Registros");
Container tela = getContentPane();
tela.setLayout(null);
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Cadastro");
while (rs.next()){
System.out.println("Nome: "+rs.getString("Nome")+" ");
System.out.println("Tel 1: "+rs.getString("Telefone_1")+" ");
System.out.println("Tel 2: "+rs.getString("Telefone_2")+" ");
System.out.println("Celular.: "+rs.getString("Celular")+" ");
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar2 app = new Consultar2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Consultar3 extends JFrame{
String result;
public Consultar3(){
super("Consulta de Registros");
Container tela = getContentPane();
tela.setLayout(null);
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE NOT
Cod>5");
while (rs.next()){
System.out.println("Codigo: "+rs.getString("Cod")+" ");
System.out.println("Nome: "+rs.getString("Nome")+" ");
System.out.println("Idade: "+rs.getString("Idade")+" ");
System.out.println("Data Nasc.: "+rs.getString("Dn")+" ");
System.out.println("Salario: "+rs.getString("Sal")+" ");
System.out.println("Deficiencia: "+rs.getString("Def")+" ");
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar3 app = new Consultar3();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Consultar4 extends JFrame{
String result;
public Consultar4(){
super("Consulta de Registros");
Container tela = getContentPane();
tela.setLayout(null);
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE Nome
LIKE '%Silva%'");
while (rs.next()){
System.out.println("Codigo: "+rs.getString("Cod")+" ");
System.out.println("Nome: "+rs.getString("Nome")+" ");
System.out.println("Idade: "+rs.getString("Idade")+" ");
System.out.println("Data Nasc.: "+rs.getString("Dn")+" ");
System.out.println("Salario: "+rs.getString("Sal")+" ");
System.out.println("Deficiencia: "+rs.getString("Def")+" ");
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar4 app = new Consultar4();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Consultar5 extends JFrame{
String result;
public Consultar5(){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

super("Consulta de Registros");
Container tela = getContentPane();
tela.setLayout(null);
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE Sal <=500
AND Dn < #01-01-1979#");
while (rs.next()){
System.out.println("Codigo: "+rs.getString("Cod")+" ");
System.out.println("Nome: "+rs.getString("Nome")+" ");
System.out.println("Idade: "+rs.getString("Idade")+" ");
System.out.println("Data Nasc.: "+rs.getString("Dn")+" ");
System.out.println("Salario: "+rs.getString("Sal")+" ");
System.out.println("Deficiencia: "+rs.getString("Def")+" ");
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar5 app = new Consultar5();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Consultar6 extends JFrame{
String result;
public Consultar6(){
super("Consulta de Registros");
Container tela = getContentPane();
tela.setLayout(null);
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE Nome


LIKE '%Silva%' OR sal < 500");
while (rs.next()){
System.out.println("Codigo: "+rs.getString("Cod")+" ");
System.out.println("Nome: "+rs.getString("Nome")+" ");
System.out.println("Idade: "+rs.getString("Idade")+" ");
System.out.println("Data Nasc.: "+rs.getString("Dn")+" ");
System.out.println("Salario: "+rs.getString("Sal")+" ");
System.out.println("Deficiencia: "+rs.getString("Def")+" ");
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar6 app = new Consultar6();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
public class Consultar7 extends JFrame{
String result;
public Consultar7(){
super("Consulta de Registros");
Container tela = getContentPane();
tela.setLayout(null);
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1,Cadastro WHERE
Tabela1.Nome=Cadastro.Nome");
while (rs.next()){
System.out.println("Codigo: "+rs.getString("Cod")+" ");
System.out.println("Nome: "+rs.getString("Nome")+" ");
System.out.println("Idade: "+rs.getString("Idade")+" ");
System.out.println("Data Nasc.: "+rs.getString("Dn")+" ");
System.out.println("Salario: "+rs.getString("Sal")+" ");
System.out.println("Deficiencia: "+rs.getString("Def")+" ");
System.out.println("Telefone 1: "+rs.getString("Telefone_1")+" ");
System.out.println("Telefone 1: "+rs.getString("Telefone_2")+" ");
System.out.println("Celular: "+rs.getString("Celular")+" ");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
}
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar7 app = new Consultar7();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Consultar8 extends JFrame{
JButton botao;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
String result;
int num;
public Consultar8(){
super("Consulta de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Código: "); t1 = new JTextField(5);
l2 = new JLabel("Nome: "); t2 = new JTextField(50);
l3 = new JLabel("Idade: "); t3 = new JTextField(2);
l4 = new JLabel("Data Nasc.: "); t4 = new JTextField(10);
l5 = new JLabel("Salário: "); t5 = new JTextField(15);
l6 = new JLabel("Deficiência: "); t6 = new JTextField(5);
l1.setBounds(20,30,80,20); t1.setBounds(100,30,150,20);
l2.setBounds(20,70,80,20); t2.setBounds(100,70,300,20);
l3.setBounds(20,110,80,20);t3.setBounds(100,110,30,20);
l4.setBounds(20,150,80,20);t4.setBounds(100,150,100,20);
l5.setBounds(20,190,80,20);t5.setBounds(100,190,70,20);
l6.setBounds(20,230,80,20);t6.setBounds(100,230,70,20);
botao = new JButton("Consultar Registro"); botao.setBounds(110,270,150,20);
tela.add(l1);tela.add(t1);
tela.add(l2);tela.add(t2);
tela.add(l3);tela.add(t3);
tela.add(l4);tela.add(t4);
tela.add(l5);tela.add(t5);
tela.add(l6);tela.add(t6);
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE
Cod="+t1.getText());
rs.next();
t2.setText(rs.getString("Nome"));
t3.setText(rs.getString("Idade"));
t4.setText(rs.getString("Dn"));
t5.setText(rs.getString("Sal"));
num=Integer.parseInt(rs.getString("Def"));
if (num==1)
result = "Sim";
else if (num==0)
result = "Não";
t6.setText(result);
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nPessoa
não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(450, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Consultar8 app = new Consultar8();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class CorDeFundo extends JFrame{
public CorDeFundo(){
super("Definindo a cor de fundo para a janela");
Container tela = getContentPane();
tela.setBackground(Color.blue);
setSize(500, 500);
setVisible(true);
}
public static void main(String args[]){
CorDeFundo app = new CorDeFundo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class CorDeFundo2 extends JFrame{
public CorDeFundo2(){
super("Definindo a cor de fundo para a janela");
Container tela = getContentPane();
tela.setBackground(new Color(255,128,128));

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

setSize(500, 500);
setVisible(true);
}
public static void main(String args[]){
CorDeFundo2 app = new CorDeFundo2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DecimalFormat;
public class Data extends JFrame{
JLabel rotulo,rotulo2;
int ds,dia,mes,ano;
Calendar data;
String diasemana[]={"Domingo","Segunda - Feira","Terça - Feira","Quarta - Feira",
"Quinta - Feira","Sexta - Feira","Sábado"};
String meses[]={"Janeiro","Fevereiro","Março","Abril","Maio","Junho",
"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"};
public Data(){
super("Exemplo de Data");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("");
rotulo2 = new JLabel("");
rotulo.setBounds(20,30,280,20);
rotulo2.setBounds(20,60,280,20);
data = Calendar.getInstance();
ds = data.get(Calendar.DAY_OF_WEEK);
dia = data.get(Calendar.DAY_OF_MONTH);
mes = data.get(Calendar.MONTH);
ano = data.get(Calendar.YEAR);
rotulo.setText("Data: "+ds+" "+dia+"/"+(mes+1)+"/"+ano);
rotulo2.setText("Data: "+diasemana[ds-1]+", "+dia+" de "+meses[mes]+" de "+ano);
tela.add(rotulo);
tela.add(rotulo2);
setSize(300, 200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Data app = new Data();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
public class DefinirIcone extends JFrame{
public DefinirIcone(){
super("Como definir o ícone para a janela");
ImageIcon icone = new ImageIcon("teste.gif");
setIconImage(icone.getImage());
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

DefinirIcone app = new DefinirIcone();


app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DesabilitarHabilitar extends JFrame{
JLabel rotulo1, rotulo2;
JButton desabilitar,habilitar;
public DesabilitarHabilitar(){
super("Exemplo de Desabilitar e Habilitar componentes");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("Rótulo 1");
rotulo2 = new JLabel("Rótulo 2");
desabilitar = new JButton("Desabilitar");
habilitar = new JButton("Habilitar");
rotulo1.setBounds(50,20,100,20);
rotulo2.setBounds(50,60,100,20);
desabilitar.setBounds(80,100,100,20);
habilitar.setBounds(250,100,100,20);
desabilitar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setEnabled(false);
rotulo2.setEnabled(false);
}
}
);
habilitar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setEnabled(true);
rotulo2.setEnabled(true);
}
}
);
tela.add(rotulo1); tela.add(rotulo2);
tela.add(desabilitar); tela.add(habilitar);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
DesabilitarHabilitar app = new DesabilitarHabilitar();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Excluir extends JFrame{
JButton botao;
public Excluir(){
super("Exclusão de Registro");
Container tela = getContentPane();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tela.setLayout(null);
botao = new JButton("Excluir Registro"); botao.setBounds(30,50,150,20);
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate("DELETE * FROM Tabela2");
JOptionPane.showMessageDialog(null,"Registros Excluidos Com
Sucesso","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(200, 150);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Excluir app = new Excluir();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Excluir2 extends JFrame{
JButton botao, botao2;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
String result;
int num;
public Excluir2(){
super("Exclusão de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Código: "); t1 = new JTextField(5);
l2 = new JLabel("Nome: "); t2 = new JTextField(50);
l3 = new JLabel("Idade: "); t3 = new JTextField(2);
l4 = new JLabel("Data Nasc.: "); t4 = new JTextField(10);
l5 = new JLabel("Salário: "); t5 = new JTextField(15);
l6 = new JLabel("Deficiência: "); t6 = new JTextField(5);
l1.setBounds(20,30,80,20); t1.setBounds(100,30,150,20);
l2.setBounds(20,70,80,20); t2.setBounds(100,70,300,20);
l3.setBounds(20,110,80,20);t3.setBounds(100,110,30,20);
l4.setBounds(20,150,80,20);t4.setBounds(100,150,100,20);
l5.setBounds(20,190,80,20);t5.setBounds(100,190,70,20);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

l6.setBounds(20,230,80,20);t6.setBounds(100,230,70,20);
botao = new JButton("Consultar Registro"); botao.setBounds(20,270,150,20);
botao2 = new JButton("Excluir Registro"); botao2.setBounds(200,270,150,20);
tela.add(l1);tela.add(t1);
tela.add(l2);tela.add(t2);
tela.add(l3);tela.add(t3);
tela.add(l4);tela.add(t4);
tela.add(l5);tela.add(t5);
tela.add(l6);tela.add(t6);
tela.add(botao);tela.add(botao2);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM Tabela2 WHERE
Cod="+t1.getText());
rs.next();
t2.setText(rs.getString("Nome"));
t3.setText(rs.getString("Idade"));
t4.setText(rs.getString("Dn"));
t5.setText(rs.getString("Sal"));
num=Integer.parseInt(rs.getString("Def"));
if (num==1)
result = "Sim";
else if (num==0)
result = "Não";
t6.setText(result);
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nPessoa
não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
botao2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate("DELETE FROM Tabela2 WHERE Cod="+t1.getText());
JOptionPane.showMessageDialog(null,"Registro Excluido com Sucesso","Mensagem
do Programa",JOptionPane.INFORMATION_MESSAGE);
t1.setText(""); t2.setText(""); t3.setText(""); t4.setText(""); t5.setText("");t6.setText("");
t1.requestFocus();
st.close();
con.close();
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \nPessoa
não encontrada","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(450, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Excluir2 app = new Excluir2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBarraDeFerramentas extends JFrame{
JToolBar barra;
JButton direita,esquerda,centralizar,recortar,copiar,colar;
ImageIcon imagens[];
public ExemploBarraDeFerramentas(){
super("Exemplo de Barra de Ferramentas");
Container tela = getContentPane();
tela.setLayout(null);
String icones[]={"imagens/direita.gif","imagens/esquerda.gif",
"imagens/centro.gif","imagens/recortar.gif",
"imagens/copiar.gif","imagens/colar.gif"};
imagens = new ImageIcon[6];
for(int i = 0;i < 6;i++){
imagens[i] = new ImageIcon(icones[i]);
}
direita = new JButton(imagens[0]);
esquerda = new JButton(imagens[1]);
centralizar = new JButton(imagens[2]);
recortar = new JButton(imagens[3]);
copiar = new JButton(imagens[4]);
colar = new JButton(imagens[5]);
direita.setToolTipText("Direita (Ctrl+d)");
esquerda.setToolTipText("Esquerda (Ctrl+e)");
centralizar.setToolTipText("Centralizar (Ctrl+z)");
recortar.setToolTipText("Recortar (Ctrl+x)");
copiar.setToolTipText("Copiar (Ctrl+c)");
colar.setToolTipText("Colar (Ctrl+v)");
barra = new JToolBar("Barra de Ferramentas");
UIManager.put("ToolTip.background",SystemColor.info);
UIManager.put("ToolTip.foreground",Color.blue);
barra.setRollover(true);
barra.add(direita);
barra.add(esquerda);
barra.add(centralizar);
barra.addSeparator();
barra.add(recortar);
barra.add(copiar);
barra.add(colar);
barra.setBounds(1,1,260,50);
tela.add(barra);
setSize(320,340);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploBarraDeFerramentas app = new ExemploBarraDeFerramentas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotao extends JFrame{
JButton botao1,botao2,botao3,botao4;
public ExemploBotao(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Próximo >>");
botao4 = new JButton ("Abrir");
botao1.setBounds(50,20,100,20);
botao2.setBounds(50,60,100,20);
botao3.setBounds(50,100,100,20);
botao4.setBounds(50,140,100,20);
tela.add(botao1);
tela.add(botao2);
tela.add(botao3);
tela.add(botao4);
setSize(400, 250);
setVisible(true);
}

public static void main(String args[]){


ExemploBotao app = new ExemploBotao();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoAoPressionarEnter extends JFrame{
JButton botao1,botao2,botao3,botao4;
public ExemploBotaoAoPressionarEnter(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Próximo >>");
botao4 = new JButton ("Abrir");
botao1.setBounds(50,20,100,20);
botao2.setBounds(50,60,100,20);
botao3.setBounds(50,100,100,20);
botao4.setBounds(50,140,100,20);
getRootPane().setDefaultButton(botao4);
tela.add(botao1);
tela.add(botao2);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tela.add(botao3);
tela.add(botao4);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploBotaoAoPressionarEnter app = new ExemploBotaoAoPressionarEnter();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaocomBotaoAtalho extends JFrame{
JButton botao1,botao2,botao3,botao4;
public ExemploBotaocomBotaoAtalho(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Próximo >>");
botao4 = new JButton ("Abrir");
botao1.setBounds(50,20,100,20);
botao2.setBounds(50,60,100,20);
botao3.setBounds(50,100,100,20);
botao4.setBounds(50,140,100,20);
botao1.setMnemonic(KeyEvent.VK_P);
botao2.setMnemonic(KeyEvent.VK_V);
botao3.setMnemonic(KeyEvent.VK_X);
botao4.setMnemonic(KeyEvent.VK_S);
tela.add(botao1);
tela.add(botao2);
tela.add(botao3);
tela.add(botao4);
setSize(400, 250);
setVisible(true);
}

public static void main(String args[]){


ExemploBotaocomBotaoAtalho app = new ExemploBotaocomBotaoAtalho();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoCordaLetra extends JFrame{
JButton botao1,botao2,botao3,botao4;
public ExemploBotaoCordaLetra(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Próximo >>");
botao4 = new JButton ("Abrir");
botao1.setBounds(50,20,100,20);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

botao2.setBounds(50,60,100,20);
botao3.setBounds(50,100,100,20);
botao4.setBounds(50,140,100,20);
botao1.setForeground(Color.blue);
botao2.setForeground(Color.green);
botao3.setForeground(Color.red);
botao4.setForeground(Color.pink);
tela.add(botao1);
tela.add(botao2);
tela.add(botao3);
tela.add(botao4);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploBotaoCordaLetra app = new ExemploBotaoCordaLetra();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoCordeFundo extends JFrame{
JButton botao1,botao2,botao3,botao4;
public ExemploBotaoCordeFundo(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Próximo >>");
botao4 = new JButton ("Abrir");
botao1.setBounds(50,20,100,20);
botao2.setBounds(50,60,100,20);
botao3.setBounds(50,100,100,20);
botao4.setBounds(50,140,100,20);
botao1.setBackground(Color.yellow);
botao2.setBackground(Color.red);
botao3.setBackground(Color.blue);
botao4.setBackground(Color.white);
tela.add(botao1);
tela.add(botao2);
tela.add(botao3);
tela.add(botao4);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploBotaoCordeFundo app = new ExemploBotaoCordeFundo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoCordeFundo extends JFrame{
JButton botao1,botao2,botao3,botao4;
public ExemploBotaoCordeFundo(){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

super("Exemplo com JButton");


Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Próximo >>");
botao4 = new JButton ("Abrir");
botao1.setBounds(50,20,100,20);
botao2.setBounds(50,60,100,20);
botao3.setBounds(50,100,100,20);
botao4.setBounds(50,140,100,20);
botao1.setBackground(Color.yellow);
botao2.setBackground(Color.red);
botao3.setBackground(Color.blue);
botao4.setBackground(Color.white);
tela.add(botao1);
tela.add(botao2);
tela.add(botao3);
tela.add(botao4);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploBotaoCordeFundo app = new ExemploBotaoCordeFundo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoSair1 extends JFrame{
JButton botao;
public ExemploBotaoSair1(){
super("Exemplo de Botões com Dica");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,50,100,20);
botao.setToolTipText("Exemplo de Botões com Diálogos de confirmação");
tela.add(botao);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
int opcao;
opcao = JOptionPane.showConfirmDialog(null,"Deseja mesmo
fechar a janela?","Fechar",JOptionPane.YES_NO_OPTION);
if (opcao==JOptionPane.YES_OPTION)
System.exit(0);
}});
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploBotaoSair1 app = new ExemploBotaoSair1();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoSair extends JFrame{
JButton botaosair;
public ExemploBotaoSair(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
botaosair = new JButton ("Sair");
botaosair.setBounds(100,50,100,20);
botaosair.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
} } );
tela.add(botaosair);
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
ExemploBotaoSair app = new ExemploBotaoSair();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotoes extends JFrame{
JButton botaotexto,botaoimagemtexto,botaoimagem;
ImageIcon icone;
public ExemploBotoes(){
super("Exemplo com JButton");
Container tela = getContentPane();
setLayout(null);
icone = new ImageIcon("abrir.gif");
botaotexto = new JButton ("Novo");
botaoimagemtexto = new JButton ("Abrir",icone);
botaoimagem = new JButton (icone);
botaotexto.setBounds(50,20,100,20);
botaoimagemtexto.setBounds(50,60,100,20);
botaoimagem.setBounds(50,100,100,20);
tela.add(botaotexto);
tela.add(botaoimagemtexto);
tela.add(botaoimagem);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploBotoes app = new ExemploBotoes();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotoesDicas extends JFrame{
JButton botao1,botao2;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

public ExemploBotoesDicas(){
super("Exemplo de Botões com Dica");
Container tela = getContentPane();
tela.setLayout(null);
botao1 = new JButton("Abrir");
botao2 = new JButton("Sair");
botao1.setBounds(100,50,100,20);
botao2.setBounds(100,100,100,20);
botao1.setToolTipText("Botão usado para abrir algo");
botao2.setToolTipText("Botão que será usado para sair");
tela.add(botao1);
tela.add(botao2);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploBotoesDicas app = new ExemploBotoesDicas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotoesDicas2 extends JFrame{
JButton botao1,botao2;
public ExemploBotoesDicas2(){
super("Exemplo de Botões com Dica");
Container tela = getContentPane();
tela.setLayout(null);
botao1 = new JButton("Abrir");
botao2 = new JButton("Sair");
botao1.setBounds(100,50,100,20);
botao2.setBounds(100,100,100,20);
botao1.setToolTipText("Botão usado para abrir algo");
botao2.setToolTipText("Botão que será usado para sair");
UIManager.put("ToolTip.background",SystemColor.info);
UIManager.put("ToolTip.foreground",Color.blue);
tela.add(botao1);
tela.add(botao2);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploBotoesDicas2 app = new ExemploBotoesDicas2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploComboCheckRadio extends JFrame{
JLabel rotulo1, rotulo2, rotulo3,texto;
JCheckBox negrito,italico,normal,negritoitalico;
JRadioButton tam1,tam2,tam3,tam4;
ButtonGroup grupo;
String cor[] = {"Sem Cor","Vermelho","Azul","Verde","Amarelo","Branco","Preto"};

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

JComboBox lista;
Integer estilo, tamfonte;
public ExemploComboCheckRadio(){
super("Exemplo Combo Check Radio BOX");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("Cor");
rotulo2 = new JLabel("Estilo");
rotulo3 = new JLabel("Tamanho");
texto = new JLabel("Programa feito em Java");
lista = new JComboBox(cor);
lista.setMaximumRowCount(7);
negrito = new JCheckBox("Negrito") ;
italico = new JCheckBox("Italico");
normal = new JCheckBox("Normal");
negritoitalico = new JCheckBox("Negrito Itálico");
tam1 = new JRadioButton("12");
tam2 = new JRadioButton("14");
tam3 = new JRadioButton("16");
tam4 = new JRadioButton("18");
grupo = new ButtonGroup();
grupo.add(tam1);
grupo.add(tam2);
grupo.add(tam3);
grupo.add(tam4);
rotulo1.setBounds(40,20,70,20);
rotulo2.setBounds(200,20,70,20);
rotulo3.setBounds(300,20,70,20);
texto.setBounds(100,200,300,20);
lista.setBounds(40,50,150,20);
negrito.setBounds(200,50,100,20);
italico.setBounds(200,70,100,20);
normal.setBounds(200,90,100,20);
negritoitalico.setBounds(200,110,150,20);
tam1.setBounds(350,50,100,20);
tam2.setBounds(350,70,100,20);
tam3.setBounds(350,90,100,20);
tam4.setBounds(350,110,100,20);
tamfonte=12;
estilo=Font.PLAIN;
lista.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if (lista.getSelectedItem().toString() == "Sem Cor")
texto.setForeground(Color.black);
if (lista.getSelectedItem().toString() == "Vermelho")
texto.setForeground(Color.red);
if (lista.getSelectedItem().toString() == "Azul")
texto.setForeground(Color.blue);
if (lista.getSelectedItem().toString() == "Verde")
texto.setForeground(Color.green);
if (lista.getSelectedItem().toString() == "Amarelo")
texto.setForeground(Color.yellow);
if (lista.getSelectedItem().toString() == "Branco")
texto.setForeground(Color.white);
if (lista.getSelectedItem().toString() == "Preto")
texto.setForeground(Color.black);}});
//coloca a fonte tamnho 12
tam1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=12;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte tamnho 14
tam2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=14;
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte tamnho 16
tam3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=16;
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte tamnho 18
tam4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tamfonte=18;
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte em negrito
negrito.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.BOLD;
normal.setSelected(false);
italico.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte em italico
italico.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.ITALIC;
normal.setSelected(false);
negrito.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte normal
normal.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.PLAIN;
negrito.setSelected(false);
italico.setSelected(false);
negritoitalico.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
//coloca a fonte em negrito e italico
negritoitalico.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
estilo=Font.BOLD+Font.ITALIC;
negrito.setSelected(false);
italico.setSelected(false);
normal.setSelected(false);
texto.setFont(new Font("",estilo,tamfonte));}});
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(texto);
tela.add(negrito);
tela.add(italico);
tela.add(normal);
tela.add(negritoitalico);
tela.add(tam1);
tela.add(tam2);
tela.add(tam3);
tela.add(tam4);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tela.add(lista);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String args[]){
ExemploComboCheckRadio app = new ExemploComboCheckRadio();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu extends JFrame{
JMenuBar barra;
JMenu opcoes;
JMenuItem limpar,fonte,sair;
public ExemploDeMenu(){
super("Exemplo de Menus");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenuItem("Fonte");
sair = new JMenuItem("Sair");
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu app = new ExemploDeMenu();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu2 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,cor;
JMenuItem limpar,sair,estilo,tamanho,azul,verde,vermelho,amarelo,preto;
public ExemploDeMenu2(){
super("Exemplo de Menus com submenus");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
estilo = new JMenuItem("Estilo");
tamanho = new JMenuItem("Tamanho");
sair = new JMenuItem("Sair");
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu2 app = new ExemploDeMenu2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu3 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,estilo,cor;
JMenuItem limpar,sair,tamanho,azul,verde,vermelho,amarelo,preto;
JCheckBoxMenuItem normal, negrito, italico, negritoitalico;
public ExemploDeMenu3(){
super("Exemplo de Menus com JChekBoxMenuItem");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

verde = new JMenuItem("Verde");


vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
estilo = new JMenu("Estilo");
tamanho = new JMenuItem("Tamanho");
normal = new JCheckBoxMenuItem("Normal");
negrito = new JCheckBoxMenuItem("Negrito");
italico = new JCheckBoxMenuItem("Itálico");
negritoitalico = new JCheckBoxMenuItem("Negrito e Itálico");
sair = new JMenuItem("Sair");
opcoes.setMnemonic(KeyEvent.VK_O);
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
normal.setMnemonic(KeyEvent.VK_M);
negrito.setMnemonic(KeyEvent.VK_N);
italico.setMnemonic(KeyEvent.VK_I);
negritoitalico.setMnemonic(KeyEvent.VK_C);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
estilo.add(normal);
estilo.add(negrito);
estilo.add(italico);
estilo.add(negritoitalico);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu3 app = new ExemploDeMenu3();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu4 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,cor,estilo,tamanho;
JMenuItem limpar,sair,azul,verde,vermelho,amarelo,preto;
JCheckBoxMenuItem nomeE[];
ButtonGroup grupoT,grupoE;
JRadioButtonMenuItem tamanhoF[];
String tam[] = {"12","14","16","18"};
String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"};

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

public ExemploDeMenu4(){
super("Exemplo de Menus com JRadioButtonMenuItem");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");
estilo = new JMenu("Estilo");
grupoE = new ButtonGroup();
nomeE = new JCheckBoxMenuItem[4];
for(int i = 0; i < 4; i++){
nomeE[i] = new JCheckBoxMenuItem(est[i]);
estilo.add(nomeE[i]);
grupoE.add(nomeE[i]);
}
tamanho = new JMenu("Tamanho");
grupoT = new ButtonGroup();
tamanhoF = new JRadioButtonMenuItem[4];
for(int i = 0; i < 4; i++){
tamanhoF[i] = new JRadioButtonMenuItem(tam[i]);
tamanho.add(tamanhoF[i]);
grupoT.add(tamanhoF[i]);
}
sair = new JMenuItem("Sair");
opcoes.setMnemonic(KeyEvent.VK_O);
limpar.setMnemonic(KeyEvent.VK_L);
fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu4 app = new ExemploDeMenu4();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMenu5 extends JFrame{
JMenuBar barra;
JMenu opcoes,fonte,cor,estilo,tamanho;
JMenuItem limpar,sair,azul,verde,vermelho,amarelo,preto;
JCheckBoxMenuItem nomeE[];
ButtonGroup grupoT,grupoE;
JRadioButtonMenuItem tamanhoF[];
String tam[] = {"12","14","16","18"};
String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"};
JTextArea texto;
JPanel painel;
JScrollPane rolagem;
int estilofonte, tamfonte;
public ExemploDeMenu5(){
super("Exemplo de Menus executando ações");
Container tela = getContentPane();
tela.setLayout(null);
estilofonte=Font.PLAIN;
tamfonte=12;
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opções");
barra.add(opcoes);
limpar = new JMenuItem("Limpar");
fonte = new JMenu("Fonte");
cor = new JMenu("Cor");
azul = new JMenuItem("Azul");
verde = new JMenuItem("Verde");
vermelho = new JMenuItem("Vermelho");
amarelo = new JMenuItem("Amarelo");
preto = new JMenuItem("Preto");

TratadorE tratestilo = new TratadorE();


estilo = new JMenu("Estilo");
grupoE = new ButtonGroup();
nomeE = new JCheckBoxMenuItem[4];
for(int i = 0; i < 4; i++){
nomeE[i] = new JCheckBoxMenuItem(est[i]);
estilo.add(nomeE[i]);
grupoE.add(nomeE[i]);
nomeE[i].addItemListener(tratestilo);
}
TratadorT trattamanho = new TratadorT();
tamanho = new JMenu("Tamanho");
grupoT = new ButtonGroup();
tamanhoF = new JRadioButtonMenuItem[4];
for(int i = 0; i < 4; i++){
tamanhoF[i] = new JRadioButtonMenuItem(tam[i]);
tamanho.add(tamanhoF[i]);
grupoT.add(tamanhoF[i]);
tamanhoF[i].addItemListener(trattamanho);
}
sair = new JMenuItem("Sair");
opcoes.setMnemonic(KeyEvent.VK_O);
limpar.setMnemonic(KeyEvent.VK_L);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

fonte.setMnemonic(KeyEvent.VK_F);
sair.setMnemonic(KeyEvent.VK_S);
cor.setMnemonic(KeyEvent.VK_C);
estilo.setMnemonic(KeyEvent.VK_E);
tamanho.setMnemonic(KeyEvent.VK_T);
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator();
opcoes.add(sair);
cor.add(azul);
cor.add(verde);
cor.add(vermelho);
cor.add(amarelo);
cor.add(preto);
fonte.add(cor);
fonte.add(estilo);
fonte.add(tamanho);
texto = new JTextArea(10,20);
rolagem = new JScrollPane(texto);

rolagem.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

rolagem.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWA
YS);
painel = new JPanel();
painel.add(rolagem);
painel.setBounds(30,30,250,250);
tela.add(painel);
limpar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setText("");
texto.requestFocus();}});
azul.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.blue);
repaint();}});
verde.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.green);
repaint();}});
vermelho.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.red);
repaint();}});
amarelo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.yellow);
repaint();}});
preto.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setForeground(Color.black);
repaint();}});
sair.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int resposta;
resposta=JOptionPane.showConfirmDialog(null,"Deseja realmente
sair?","Mensagem do Programa",JOptionPane.YES_NO_OPTION);
if (resposta==6)
System.exit(0);}});
setSize(500,300);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDeMenu5 app = new ExemploDeMenu5();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class TratadorE implements ItemListener{
public void itemStateChanged(ItemEvent e){
if(nomeE[0].isSelected())
estilofonte= Font.PLAIN;
if(nomeE[1].isSelected())
estilofonte= Font.BOLD;
if(nomeE[2].isSelected())
estilofonte= Font.ITALIC;
if(nomeE[3].isSelected())
estilofonte= Font.BOLD+Font.ITALIC;
texto.setFont(new Font("", estilofonte, tamfonte));
repaint(); } }
private class TratadorT implements ItemListener{
public void itemStateChanged(ItemEvent e){
if(tamanhoF[0].isSelected())
tamfonte= 12;
if(tamanhoF[1].isSelected())
tamfonte= 14;
if(tamanhoF[2].isSelected())
tamfonte= 16;
if(tamanhoF[3].isSelected())
tamfonte= 18;
texto.setFont(new Font("", estilofonte, tamfonte));
repaint(); } }
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDeMessagens extends JFrame{
JButton erro, informacao, exclamacao, pergunta, nenhum;
public ExemploDeMessagens(){
super("Exemplo de mensagens");
Container tela = getContentPane();
tela.setLayout(null);
erro = new JButton("Erro");
informacao = new JButton("Informação");
exclamacao = new JButton("Exclamação");
pergunta = new JButton("Pergunta");
nenhum = new JButton("Nenhum");
erro.setBounds(30,20,100,20);
informacao.setBounds(30,50,100,20);
exclamacao.setBounds(30,80,150,20);
pergunta.setBounds(30,110,100,20);
nenhum.setBounds(30,140,100,20);
tela.add(erro);
tela.add(informacao);
tela.add(exclamacao);
tela.add(pergunta);
tela.add(nenhum);
erro.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

JOptionPane.showMessageDialog(null,"Você escolheu erro","Mensagem de


Erro",JOptionPane.ERROR_MESSAGE,null);}});
informacao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Você escolheu
informação","Mensagem de Informação",JOptionPane.INFORMATION_MESSAGE,null);}});
pergunta.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Você escolheu
pergunta","Mensagem de Pergunta",JOptionPane.QUESTION_MESSAGE,null);}});
nenhum.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Você escolheu
nenhum","Mensagem",JOptionPane.PLAIN_MESSAGE,null);}});
exclamacao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,"Você escolheu
exclamação","Mensagem de Exclamação",JOptionPane.WARNING_MESSAGE,null);}});
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploDeMessagens app = new ExemploDeMessagens();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploDePopupMenu extends JFrame{
JPopupMenu opcoes;
JMenuItem recortar,copiar,colar;
JTextArea texto;
public ExemploDePopupMenu(){
super("Exemplo de PopupMenu");
Container tela = getContentPane();
tela.setLayout(null);
texto = new JTextArea(10,20);
texto.setBounds(30,30,250,250);
texto.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e) {
if(e.isPopupTrigger())
opcoes.show(e.getComponent(),e.getX(),e.getY());
}});
Tratador tratmenu = new Tratador();
opcoes = new JPopupMenu();
recortar = new JMenuItem("Recortar");
copiar = new JMenuItem("Copiar");
colar = new JMenuItem("Colar");
recortar.setMnemonic(KeyEvent.VK_R);
copiar.setMnemonic(KeyEvent.VK_C);
colar.setMnemonic(KeyEvent.VK_L);
recortar.addActionListener(tratmenu);
copiar.addActionListener(tratmenu);
colar.addActionListener(tratmenu);
opcoes.add(recortar);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

opcoes.add(copiar);
opcoes.addSeparator();
opcoes.add(colar);
tela.add(texto);
setSize(320,340);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploDePopupMenu app = new ExemploDePopupMenu();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class Tratador implements ActionListener{
public void actionPerformed(ActionEvent e){
if(e.getSource()==recortar)
texto.cut();
if(e.getSource()==copiar)
texto.copy();
if(e.getSource()==colar)
texto.paste();
repaint();
}}}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploInputDialog extends JFrame{
JButton botao;
String nome;
JLabel rotulo;
public ExemploInputDialog(){
super("Exemplo de Input Dialog");
Container tela = getContentPane();
tela.setLayout(null);
nome = JOptionPane.showInputDialog("Entre com seu nome: ");
rotulo = new JLabel("");
botao = new JButton("Sair");
rotulo.setBounds(10,40,350,20);
botao.setBounds(100,90,100,20);
botao.setToolTipText("Botão que finaliza a janela");
rotulo.setText("O nome digitado foi: "+nome.toUpperCase());
tela.add(rotulo);
tela.add(botao);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
int opcao;
Object[] botoes = {"Sim","Não"};
opcao = JOptionPane.showOptionDialog(null,"Deseja mesmo
fechar a
janela?","Fechar",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,b
otoes,botoes[0]);
if (opcao==JOptionPane.YES_OPTION)
System.exit(0);
}});
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

ExemploInputDialog app = new ExemploInputDialog();


app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.JOptionPane;
public class ExemploInputDialog1{
public static void main(String args[]){
Object linguagens [] = {"Java","Delphi","C++","Visual Basic"};
Object opcao = JOptionPane.showInputDialog(null,"Qual sua linguagem
favorita?","Enquete",JOptionPane.QUESTION_MESSAGE,null,linguagens,linguagens[0]);
JOptionPane.showMessageDialog(null,"Você escolheu: "+opcao);
System.exit(0);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJCheckBox extends JFrame{
JCheckBox primeira,segunda,terceira,quarta,quinta;
JLabel vazio;
public ExemploJCheckBox(){
super("Exemplo de um JCheckBox");
Container tela = getContentPane();
tela.setLayout(null);
JLabel rotulo = new JLabel("Quais suas linguagens favoritas? ");
rotulo.setBounds(40,30,200,20);
primeira = new JCheckBox("Java");
primeira.setMnemonic(KeyEvent.VK_J);
primeira.setBounds(40,60,60,20);
segunda = new JCheckBox("C++");
segunda.setMnemonic(KeyEvent.VK_C);
segunda.setBounds(100,60,60,20);
terceira = new JCheckBox("Delphi");
terceira.setMnemonic(KeyEvent.VK_D);
terceira.setBounds(160,60,60,20);
quarta = new JCheckBox("Visual Basic");
quarta.setMnemonic(KeyEvent.VK_V);
quarta.setBounds(230,60,100,20);
quinta = new JCheckBox("Python");
quinta.setMnemonic(KeyEvent.VK_P);
quinta.setBounds(335,60,70,20);
JButton botao = new JButton("Exibir");
botao.setBounds(200,150,100,20);
vazio = new JLabel("");
vazio.setBounds(100,200,600,20);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String escolhas = "";
if (primeira.isSelected() ==true)
escolhas = escolhas + primeira.getText();
if (segunda.isSelected() ==true)
escolhas = escolhas +" "+segunda.getText();
if (terceira.isSelected() ==true)
escolhas = escolhas +" "+terceira.getText();
if (quarta.isSelected() ==true)
escolhas = escolhas +" "+quarta.getText();
if (quinta.isSelected() ==true)

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

escolhas = escolhas+" "+quinta.getText();


vazio.setText("Você escolheu: "+escolhas);}});
tela.add(rotulo);
tela.add(primeira);
tela.add(segunda);
tela.add(terceira);
tela.add(quarta);
tela.add(quinta);
tela.add(botao);
tela.add(vazio);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploJCheckBox app = new ExemploJCheckBox();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJCheckBox1 extends JFrame{
JCheckBox primeira,segunda,terceira,quarta,quinta;
JLabel vazio;
public ExemploJCheckBox1(){
super("Exemplo de um JCheckBox");
Container tela = getContentPane();
tela.setLayout(null);
JLabel rotulo = new JLabel("Quais suas linguagens favoritas? ");
rotulo.setBounds(40,30,200,20);
primeira = new JCheckBox("Java");
primeira.setMnemonic(KeyEvent.VK_J);
primeira.setBounds(40,60,60,20);
primeira.setForeground(Color.blue);
segunda = new JCheckBox("C++");
segunda.setMnemonic(KeyEvent.VK_C);
segunda.setBounds(100,60,60,20);
segunda.setForeground(Color.red);
terceira = new JCheckBox("Delphi");
terceira.setMnemonic(KeyEvent.VK_D);
terceira.setBounds(160,60,60,20);
terceira.setForeground(Color.green);
quarta = new JCheckBox("Visual Basic");
quarta.setMnemonic(KeyEvent.VK_V);
quarta.setBounds(230,60,100,20);
quarta.setForeground(Color.yellow);
quinta = new JCheckBox("Python");
quinta.setMnemonic(KeyEvent.VK_P);
quinta.setBounds(335,60,70,20);
quinta.setForeground(Color.white);
JButton botao = new JButton("Exibir");
botao.setBounds(200,150,100,20);
vazio = new JLabel("");
vazio.setBounds(100,200,600,20);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String escolhas = "";

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

if (primeira.isSelected() ==true)
escolhas = escolhas + primeira.getText();
if (segunda.isSelected() ==true)
escolhas = escolhas +" "+segunda.getText();
if (terceira.isSelected() ==true)
escolhas = escolhas +" "+terceira.getText();
if (quarta.isSelected() ==true)
escolhas = escolhas +" "+quarta.getText();
if (quinta.isSelected() ==true)
escolhas = escolhas+" "+quinta.getText();
vazio.setText("Você escolheu: "+escolhas);}});
tela.add(rotulo);
tela.add(primeira);
tela.add(segunda);
tela.add(terceira);
tela.add(quarta);
tela.add(quinta);
tela.add(botao);
tela.add(vazio);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploJCheckBox1 app = new ExemploJCheckBox1();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJCheckBox2 extends JFrame{
JCheckBox primeira,segunda,terceira,quarta,quinta;
public ExemploJCheckBox2(){
super("Exemplo de um JCheckBox");
Container tela = getContentPane();
tela.setLayout(null);

primeira = new JCheckBox("Java");


segunda = new JCheckBox("C++");
terceira = new JCheckBox("Delphi");
quarta = new JCheckBox("Visual Basic");
quinta = new JCheckBox("Python");

primeira.setMnemonic(KeyEvent.VK_J);
segunda.setMnemonic(KeyEvent.VK_C);
terceira.setMnemonic(KeyEvent.VK_D);
quarta.setMnemonic(KeyEvent.VK_V);
quinta.setMnemonic(KeyEvent.VK_P);

primeira.setBounds(40,60,60,20);
segunda.setBounds(100,60,60,20);
terceira.setBounds(160,60,60,20);
quarta.setBounds(230,60,100,20);
quinta.setBounds(335,60,70,20);

primeira.setSelected(true);
tela.add(primeira);
tela.add(segunda);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tela.add(terceira);
tela.add(quarta);
tela.add(quinta);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploJCheckBox2 app = new ExemploJCheckBox2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJComboBox extends JFrame{
JComboBox lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo",
"Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
JLabel rotulo;
public ExemploJComboBox(){
super("Exemplo de JComboBox");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
rotulo = new JLabel("");
lista = new JComboBox(cidades);
lista.setMaximumRowCount(5);
lista.setBounds(50,50,150,30);
exibir.setBounds(270,50,100,30);
rotulo.setBounds(50,150,200,30);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedItem().toString());
}
}
);
tela.add(lista);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJComboBox app = new ExemploJComboBox();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJComboBox2 extends JFrame{
JComboBox lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo",
"Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

JLabel rotulo;
public ExemploJComboBox2(){
super("Exemplo de JComboBox");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
rotulo = new JLabel("");
lista = new JComboBox(cidades);
lista.setEditable(true);
lista.setMaximumRowCount(5);
lista.setBounds(50,50,150,30);
exibir.setBounds(270,50,100,30);
rotulo.setBounds(50,150,200,30);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedItem().toString());
}
}
);
tela.add(lista);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJComboBox2 app = new ExemploJComboBox2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
public class ExemploJFormattedTextField extends JFrame{
JLabel rotulocep,rotulotel,rotulocpf,rotulodata;
JFormattedTextField cep,tel, cpf, data;
MaskFormatter mascaracep,mascaratel, mascaracpf, mascaradata;
public ExemploJFormattedTextField(){
super("Exemplo com JFormattedTextField");
Container tela = getContentPane();
setLayout(null);
rotulocep = new JLabel("CEP: ");
rotulotel = new JLabel("Telefone: ");
rotulocpf = new JLabel("CPF: ");
rotulodata = new JLabel("Data: ");
rotulocep.setBounds(50,40,100,20);
rotulotel.setBounds(50,80,100,20);
rotulocpf.setBounds(50,120,100,20);
rotulodata.setBounds(50,160,100,20);
try{
mascaracep = new MaskFormatter("#####-###");
mascaratel = new MaskFormatter("(##)####-####");
mascaracpf = new MaskFormatter("#########-##");
mascaradata = new MaskFormatter("##/##/####");
mascaracep.setPlaceholderCharacter('_');
mascaratel.setPlaceholderCharacter('_');

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

mascaracpf.setPlaceholderCharacter('_');
mascaradata.setPlaceholderCharacter('_');
}
catch(ParseException excp){}
cep = new JFormattedTextField(mascaracep);
tel = new JFormattedTextField(mascaratel);
cpf = new JFormattedTextField(mascaracpf);
data = new JFormattedTextField(mascaradata);
cep.setBounds(150,40,150,20);
tel.setBounds(150,80,150,20);
cpf.setBounds(150,120,150,20);
data.setBounds(150,160,150,20);
cep.setForeground(Color.blue);
tel.setForeground(Color.red);
cpf.setForeground(Color.green);
data.setForeground(new Color(255,128,128));
cep.setBackground(Color.yellow);
tel.setBackground(Color.yellow);
cpf.setBackground(new Color(255,255,204));
data.setBackground(new Color(255,255,204));
cep.setFont(new Font("Times New Roman",Font.BOLD,14));
tel.setFont(new Font("Comic Sans MS",Font.PLAIN,14));
cpf.setFont(new Font("Arial",Font.BOLD,14));
data.setFont(new Font("Tahoma",Font.BOLD,14));
tela.add(rotulocep);
tela.add(rotulotel);
tela.add(rotulocpf);
tela.add(rotulodata);
tela.add(cep);
tela.add(tel);
tela.add(cpf);
tela.add(data);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJFormattedTextField app = new ExemploJFormattedTextField();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJList extends JFrame{
JList lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo",
"Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
JLabel rotulo;
public ExemploJList(){
super("Exemplo de List");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
rotulo = new JLabel("");
lista = new JList(cidades);
lista.setVisibleRowCount(5);
JScrollPane painelRolagem = new JScrollPane(lista);
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

painelRolagem.setBounds(40,50,150,100);
exibir.setBounds(270,50,100,30);
rotulo.setBounds(50,150,200,30);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedValue().toString());
}
}
);
tela.add(painelRolagem);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJList app = new ExemploJList();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJList2 extends JFrame{
JList lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo",
"Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
public ExemploJList2(){
super("Exemplo de List");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
lista = new JList(cidades);
lista.setVisibleRowCount(5);
JScrollPane painelRolagem = new JScrollPane(lista);
lista.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
painelRolagem.setBounds(40,50,150,100);
exibir.setBounds(270,50,100,30);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
Object selecionados[] = lista.getSelectedValues();
String resultados = "Valores selecionados:\n";
for(int i=0;i<selecionados.length;i++)
resultados += selecionados[i].toString()+"\n";
JOptionPane.showMessageDialog(null,resultados);
}
}
);
tela.add(painelRolagem);
tela.add(exibir);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJList2 app = new ExemploJList2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJList3 extends JFrame{
JList lista;
String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo",
"Bahia","Pernambuco","Rio Grande do Sul","Acre"};
JButton exibir;
JLabel rotulo;
public ExemploJList3(){
super("Exemplo de List");
Container tela = getContentPane();
setLayout(null);
exibir = new JButton("Exibir");
rotulo = new JLabel("");
lista = new JList(cidades);
lista.setVisibleRowCount(5);
JScrollPane painelRolagem = new JScrollPane(lista);
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
painelRolagem.setBounds(40,50,150,100);
exibir.setBounds(270,50,100,30);
rotulo.setBounds(50,150,200,30);
lista.setForeground(Color.blue);
lista.setBackground(Color.yellow);
lista.setFont(new Font("Times New Roman",Font.BOLD,16));
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado é: "+lista.getSelectedValue().toString());
}
}
);
tela.add(painelRolagem);
tela.add(exibir);
tela.add(rotulo);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJList3 app = new ExemploJList3();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJPasswordField extends JFrame{
JPasswordField caixa;
JLabel rotulo;
public ExemploJPasswordField(){
super("Exemplo com JPasswordField");
Container tela = getContentPane();
setLayout(null);
rotulo = new JLabel("Senha: ");
caixa = new JPasswordField(10);
rotulo.setBounds(50,20,100,20);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

caixa.setBounds(50,60,200,20);
tela.add(rotulo);
tela.add(caixa);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
ExemploJPasswordField app = new ExemploJPasswordField();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class ExemploJTextArea extends JFrame{
JLabel rotulo;
JTextArea texto;
public ExemploJTextArea(){
super("Exemplo com JTextArea");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel ("Endereço");
texto = new JTextArea(20,30);
rotulo.setBounds(50,20,100,20);
texto.setBounds(50,50,250,250);
tela.add(rotulo);
tela.add(texto);
setSize(400, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextArea app = new ExemploJTextArea();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class ExemploJTextArea2 extends JFrame{
JLabel rotulo;
JTextArea texto;
public ExemploJTextArea2(){
super("Exemplo com JTextField");
Container tela = getContentPane();
setLayout(null);
rotulo = new JLabel ("Endereço");
texto = new JTextArea(20,30);
rotulo.setBounds(50,20,100,20);
texto.setBounds(50,50,300,250);
texto.setLineWrap(true);
texto.setWrapStyleWord(true);
tela.add(rotulo);
tela.add(texto);
setSize(400, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextArea2 app = new ExemploJTextArea2();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJTextArea3 extends JFrame{
JLabel rotulo;
JTextArea texto;
JScrollPane painelrolagem;
JPanel painel;
public ExemploJTextArea3(){
super("Exemplo com JTextField");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel ("Endereço");
rotulo.setBounds(50,20,100,20);
texto = new JTextArea(10,20);
painelrolagem = new JScrollPane(texto);
painelrolagem.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

painelrolagem.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAY
S);
painel = new JPanel();
painel.add(painelrolagem);
painel.setBounds(40,40,250,250);
tela.add(rotulo);
tela.add(painel);
setSize(300, 280);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextArea3 app = new ExemploJTextArea3();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class ExemploJTextArea4 extends JFrame{
JLabel rotulo;
JTextArea texto;
public ExemploJTextArea4(){
super("Exemplo com JTextArea");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel ("Endereço");
texto = new JTextArea(20,30);
rotulo.setBounds(50,20,100,20);
texto.setBounds(50,50,250,250);
texto.setForeground(Color.blue);
texto.setBackground(Color.yellow);
texto.setFont(new Font("Comic Sans MS",Font.BOLD+Font.ITALIC,20));
tela.add(rotulo);
tela.add(texto);
setSize(400, 350);
setVisible(true);
setLocationRelativeTo(null);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

}
public static void main(String args[]){
ExemploJTextArea4 app = new ExemploJTextArea4();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class ExemploJTextField extends JFrame{
JLabel rotulo1,rotulo2,rotulo3,rotulo4;
JTextField texto1,texto2,texto3,texto4;
public ExemploJTextField (){
super("Exemplo com JTextField");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel ("Nome");
rotulo2 = new JLabel ("Idade");
rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");
texto1 = new JTextField(50);
texto2 = new JTextField(3);
texto3 = new JTextField(10);
texto4 = new JTextField(10);
rotulo1.setBounds(50,20,80,20);
rotulo2.setBounds(50,60,80,20);
rotulo3.setBounds(50,100,80,20);
rotulo4.setBounds(50,140,80,20);
texto1.setBounds(110,20,200,20);
texto2.setBounds(110,60,20,20);
texto3.setBounds(110,100,80,20);
texto4.setBounds(110,140,80,20);
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);
tela.add(texto1);
tela.add(texto2);
tela.add(texto3);
tela.add(texto4);
setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextField app = new ExemploJTextField();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class ExemploJTextFieldCorLetra extends JFrame{
JLabel rotulo1,rotulo2,rotulo3,rotulo4;
JTextField texto1,texto2,texto3,texto4;
public ExemploJTextFieldCorLetra (){
super("Exemplo com JTextField");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel ("Nome");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

rotulo2 = new JLabel ("Idade");


rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");
texto1 = new JTextField(50);
texto2 = new JTextField(3);
texto3 = new JTextField(10);
texto4 = new JTextField(10);
rotulo1.setBounds(50,20,80,20);
rotulo2.setBounds(50,60,80,20);
rotulo3.setBounds(50,100,80,20);
rotulo4.setBounds(50,140,80,20);
texto1.setBounds(110,20,200,20);
texto2.setBounds(110,60,20,20);
texto3.setBounds(110,100,80,20);
texto4.setBounds(110,140,80,20);
texto1.setForeground(Color.blue);
texto2.setForeground(Color.red);
texto3.setForeground(new Color(182,105,126));
texto4.setForeground(new Color(205,255,126));
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);
tela.add(texto1);
tela.add(texto2);
tela.add(texto3);
tela.add(texto4);
setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextFieldCorLetra app = new ExemploJTextFieldCorLetra();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
public class ExemploJTextFieldFundo extends JFrame{
JLabel rotulo1,rotulo2,rotulo3,rotulo4;
JTextField texto1,texto2,texto3,texto4;
public ExemploJTextFieldFundo (){
super("Exemplo com JTextField");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel ("Nome");
rotulo2 = new JLabel ("Idade");
rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");
texto1 = new JTextField(50);
texto2 = new JTextField(3);
texto3 = new JTextField(10);
texto4 = new JTextField(10);
rotulo1.setBounds(50,20,80,20);
rotulo2.setBounds(50,60,80,20);
rotulo3.setBounds(50,100,80,20);
rotulo4.setBounds(50,140,80,20);
texto1.setBounds(110,20,200,20);
texto2.setBounds(110,60,20,20);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

texto3.setBounds(110,100,80,20);
texto4.setBounds(110,140,80,20);
texto1.setBackground(Color.yellow);
texto2.setBackground(Color.green);
texto3.setBackground(new Color(182,105,126));
texto4.setBackground(new Color(205,255,126));
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);
tela.add(texto1);
tela.add(texto2);
tela.add(texto3);
tela.add(texto4);
setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploJTextFieldFundo app = new ExemploJTextFieldFundo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
public class ExemploLabel extends JFrame{
JLabel rotulo1,rotulo2,rotulo3,rotulo4;
public ExemploLabel(){
super("Exemplo com JTextField");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel ("Nome");
rotulo2 = new JLabel ("Idade");
rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");
rotulo1.setBounds(50,20,100,20);
rotulo2.setBounds(50,60,100,20);
rotulo3.setBounds(50,100,100,20);
rotulo4.setBounds(50,140,100,20);
rotulo1.setForeground(Color.red);
rotulo2.setForeground(Color.blue);
rotulo3.setForeground(new Color(190,152,142));
rotulo4.setForeground(new Color(201,200,100));
rotulo1.setFont(new Font("Arial",Font.BOLD,14));
rotulo2.setFont(new Font("Comic Sans MS",Font.BOLD,16));
rotulo3.setFont(new Font("Courier New",Font.BOLD,18));
rotulo4.setFont(new Font("Times New Roman",Font.BOLD,20));
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);
setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploLabel app = new ExemploLabel();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploMinusculas extends JFrame{
JButton copiar,limpar;
JLabel rotulo1,rotulo2;
JTextField texto1,texto2;
public ExemploMinusculas(){
super("Exemplo de saídas minúsculas");
Container tela = getContentPane();
tela.setLayout(null);
rotulo1 = new JLabel("Nome: ");
rotulo2 = new JLabel("Nome: ");
texto1 = new JTextField(20);
texto2 = new JTextField(20);
copiar = new JButton("Copiar");
limpar = new JButton("Limpar");
rotulo1.setBounds(20,30,50,20);
rotulo2.setBounds(20,60,50,20);
texto1.setBounds(60,30,180,20);
texto2.setBounds(60,60,180,20);
copiar.setBounds(20,130,100,20);
limpar.setBounds(180,130,100,20);
copiar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String texto;
texto = texto1.getText().toUpperCase();
texto1.setText(texto);
texto2.setText(texto1.getText().toLowerCase());}});
limpar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto1.setText("");
texto2.setText("");
texto1.requestFocus();}});
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(texto1);
tela.add(texto2);
tela.add(copiar);
tela.add(limpar);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploMinusculas app = new ExemploMinusculas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploMaiusculas extends JFrame{
JButton copiar,limpar;
JLabel rotulo1,rotulo2;
JTextField texto1,texto2;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

public ExemploMaiusculas(){
super("Exemplo de saídas maiúsculas");
Container tela = getContentPane();
tela.setLayout(null);
rotulo1 = new JLabel("Nome: ");
rotulo2 = new JLabel("Nome: ");
texto1 = new JTextField(20);
texto2 = new JTextField(20);
copiar = new JButton("Copiar");
limpar = new JButton("Limpar");
rotulo1.setBounds(20,30,50,20);
rotulo2.setBounds(20,60,50,20);
texto1.setBounds(60,30,180,20);
texto2.setBounds(60,60,180,20);
copiar.setBounds(20,130,100,20);
limpar.setBounds(180,130,100,20);
copiar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto2.setText(texto1.getText().toUpperCase());}});
limpar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto1.setText("");
texto2.setText("");
texto1.requestFocus();}});
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(texto1);
tela.add(texto2);
tela.add(copiar);
tela.add(limpar);
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploMaiusculas app = new ExemploMaiusculas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploRadioButton extends JFrame{
JRadioButton primeira,segunda,terceira,quarta,quinta;
JLabel rotulo,rotulo2;
JButton exibir;
ButtonGroup grupo;
public ExemploRadioButton(){
super("Exemplo de um JRadioButton");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("Escolha uma cidade: ");
rotulo.setBounds(50,20,200,20);
rotulo2 = new JLabel("");
rotulo2.setBounds(150,240,400,20);
exibir = new JButton ("Exibir");
exibir.setBounds(200,200,120,20);
primeira = new JRadioButton("Rio de Janeiro");
segunda = new JRadioButton("São Paulo");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

terceira = new JRadioButton("Minas Gerais");


quarta = new JRadioButton("Amazonas");
quinta = new JRadioButton("Rio Grande do Sul");
primeira.setBounds(50,50,120,20);
segunda.setBounds(50,80,120,20);
terceira.setBounds(50,110,120,20);
quarta.setBounds(50,140,120,20);
quinta.setBounds(50,170,200,20);
primeira.setMnemonic(KeyEvent.VK_J);
segunda.setMnemonic(KeyEvent.VK_C);
terceira.setMnemonic(KeyEvent.VK_D);
quarta.setMnemonic(KeyEvent.VK_V);
quinta.setMnemonic(KeyEvent.VK_P);
grupo = new ButtonGroup();
grupo.add(primeira);
grupo.add(segunda);
grupo.add(terceira);
grupo.add(quarta);
grupo.add(quinta);
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if (primeira.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+primeira.getText());
if (segunda.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+segunda.getText());
if (terceira.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+terceira.getText());
if (quarta.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+quarta.getText());
if (quinta.isSelected() ==true)
rotulo2.setText("A cidade escolhida foi: "+quinta.getText());
}});
tela.add(rotulo);
tela.add(primeira);
tela.add(segunda);
tela.add(terceira);
tela.add(quarta);
tela.add(quinta);
tela.add(exibir);
tela.add(rotulo2);
setSize(500,300);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main (String args[]){
ExemploRadioButton app = new ExemploRadioButton();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploSplashScreen extends JFrame{
TelaInicial inicio;
JButton botaosair;
public ExemploSplashScreen(){
super("Exemplo de Splash Screen");
Container tela = getContentPane();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tela.setLayout(null);
inicio = new TelaInicial();
inicio.setVisible(true);
botaosair = new JButton ("Sair");
botaosair.setBounds(100,50,100,20);
botaosair.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
} } );
tela.add(botaosair);
setSize(300, 150);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploSplashScreen app = new ExemploSplashScreen();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void principal(){
setVisible(true);
}
private class TelaInicial extends JWindow{
public TelaInicial(){
Container tela = getContentPane();
tela.setLayout(new FlowLayout(FlowLayout.LEFT,1,1));
ImageIcon imagem = new ImageIcon("imagens/fundo.gif");
JLabel rotulo = new JLabel(imagem);
tela.add(rotulo);
ActionListener fechar = new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
dispose();
principal();}};
javax.swing.Timer timer = new javax.swing.Timer(5000,fechar);
timer.start();
pack();
setLocationRelativeTo(null);
}
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploTraduzir extends JFrame{
JButton botao;
public ExemploTraduzir(){
super("Exemplo Traduzir Botões");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,90,100,20);
botao.setToolTipText("Botão que finaliza a janela");
tela.add(botao);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
int opcao;
Object[] botoes = {"Sim","Não"};

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

opcao = JOptionPane.showOptionDialog(null,"Deseja mesmo


fechar a
janela?","Fechar",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,b
otoes,botoes[0]);
if (opcao==JOptionPane.YES_OPTION)
System.exit(0);
}});
setSize(300,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ExemploTraduzir app = new ExemploTraduzir();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.text.DecimalFormat;
import javax.swing.Timer;
public class Hora extends JFrame{
JLabel rotulo;
int hh,mm,ss,h;
Calendar hora;
DecimalFormat formato;
public Hora(){
super("Exemplo de Hora");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("");
rotulo.setBounds(20,30,280,20);
ActionListener tarefa = (new ActionListener(){
public void actionPerformed(ActionEvent e){
HORAS();
}
});
javax.swing.Timer time = new javax.swing.Timer(1000,tarefa);
time.start();
tela.add(rotulo);
setSize(300, 200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Hora app = new Hora();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void HORAS(){
hora = Calendar.getInstance();
hh = hora.get(Calendar.HOUR_OF_DAY);
mm = hora.get(Calendar.MINUTE);
ss = hora.get(Calendar.SECOND);
formato = new DecimalFormat("00");
rotulo.setText("Hora: "+formatar(hh%12)+":"+formatar(mm)+":"+formatar(ss));

}
private String formatar(int num){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

formato = new DecimalFormat("00");


return formato.format(num);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Incluir extends JFrame{
JButton botao;
JLabel lnome, ltel1,ltel2,lcel;
JTextField tnome,ttel1,ttel2,tcel;
public Incluir(){
super("Inclusão de Registro");
Container tela = getContentPane();
tela.setLayout(null);
lnome = new JLabel("Nome: ");
ltel1 = new JLabel("Telefone 1: ");
ltel2 = new JLabel("Telefone 2: ");
lcel = new JLabel("Celular: ");
tnome = new JTextField(50);
ttel1 = new JTextField(15);
ttel2 = new JTextField(15);
tcel = new JTextField(15);
botao = new JButton("Incluir Registro");
lnome.setBounds(20,30,80,20);
ltel1.setBounds(20,70,80,20);
ltel2.setBounds(20,110,80,20);
lcel.setBounds(20,150,80,20);
tnome.setBounds(100,30,280,20);
ttel1.setBounds(100,70,100,20);
ttel2.setBounds(100,110,100,20);
tcel.setBounds(100,150,100,20);
botao.setBounds(110,190,150,20);
tela.add(lnome);
tela.add(ltel1);
tela.add(ltel2);
tela.add(lcel);
tela.add(tnome);
tela.add(ttel1);
tela.add(ttel2);
tela.add(tcel);
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate("INSERT INTO Cadastro (Nome, Telefone_1, Telefone_2,
Celular) VALUES
('"+tnome.getText()+"','"+ttel1.getText()+"','"+ttel2.getText()+"','"+tcel.getText()+"')");
tnome.setText("");
ttel1.setText("");
ttel2.setText("");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tcel.setText("");
tnome.requestFocus();
JOptionPane.showMessageDialog(null,"Registro Inserido Com
Sucesso","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não
estabelecida","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(400, 250);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Incluir app = new Incluir();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class Incluir2 extends JFrame{
JButton botao;
JLabel l1,l2,l3,l4,l5,l6;
JTextField t1,t2,t3,t4,t5,t6;
String result;
public Incluir2(){
super("Inclusão de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Código: "); t1 = new JTextField(5);
l2 = new JLabel("Nome: "); t2 = new JTextField(50);
l3 = new JLabel("Idade: "); t3 = new JTextField(2);
l4 = new JLabel("Data Nasc.: "); t4 = new JTextField(10);
l5 = new JLabel("Salário: "); t5 = new JTextField(15);
l6 = new JLabel("Deficiência: "); t6 = new JTextField(5);
l1.setBounds(20,30,80,20); t1.setBounds(100,30,150,20);
t1.setText("AutoNumeração S/V"); t1.setEnabled(false);
l2.setBounds(20,70,80,20); t2.setBounds(100,70,300,20); t2.requestFocus();
l3.setBounds(20,110,80,20);t3.setBounds(100,110,30,20);
l4.setBounds(20,150,80,20);t4.setBounds(100,150,100,20);
l5.setBounds(20,190,80,20);t5.setBounds(100,190,70,20);
l6.setBounds(20,230,80,20);t6.setBounds(100,230,70,20);
botao = new JButton("Incluir Registro"); botao.setBounds(110,270,150,20);
tela.add(l1);tela.add(t1);
tela.add(l2);tela.add(t2);
tela.add(l3);tela.add(t3);
tela.add(l4);tela.add(t4);
tela.add(l5);tela.add(t5);
tela.add(l6);tela.add(t6);
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

if ((t6.getText().equals("s")) || (t6.getText().equals("S")))
result = "1";
else if ((t6.getText().equals("n")) || (t6.getText().equals("N")))
result = "0";
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate("INSERT INTO Tabela1 (Nome, Idade, Dn, Sal, Def)
VALUES ('"+t2.getText()+"',"+t3.getText()+",#"+t4.getText()+"#,"+t5.getText()+","+result+")");
t1.setText(""); t2.setText(""); t3.setText(""); t4.setText(""); t5.setText("");t6.setText("");
t2.requestFocus();
JOptionPane.showMessageDialog(null,"Registro Inserido Com
Sucesso","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Digitados Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
setSize(450, 350);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Incluir2 app = new Incluir2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
public class JanelaCentralizada extends JFrame{
public JanelaCentralizada(){
super("Janela Centralizada");
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
JanelaCentralizada app = new JanelaCentralizada();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
public class JanelaMaximizada extends JFrame{
public JanelaMaximizada(){
super("Como exibir a janela maximizada");
setSize(300, 150);
setVisible(true);
setExtendedState(MAXIMIZED_BOTH);
}
public static void main(String args[]){
JanelaMaximizada app = new JanelaMaximizada();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
public class JanelaMinimizada extends JFrame{
public JanelaMinimizada(){
super("Como exibir a janela minimizada");
setSize(300, 150);
setVisible(true);
setExtendedState(ICONIFIED);
}
public static void main(String args[]){
JanelaMinimizada app = new JanelaMinimizada();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Limpar extends JFrame{
JLabel rotulo1, rotulo2;
JTextField texto1,texto2;
JButton limpar;
public Limpar(){
super("Exemplo Limpar");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("1º Número: "); rotulo2 = new JLabel("2º Número: ");
texto1 = new JTextField(5);texto2 = new JTextField(5);
limpar = new JButton("Limpar");
rotulo1.setBounds(50,20,100,20); rotulo2.setBounds(50,60,100,20);
texto1.setBounds(120,20,200,20); texto2.setBounds(120,60,200,20);
limpar.setBounds(150,100,80,20);
limpar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
texto1.setText(null);
texto2.setText(null);
texto1.requestFocus();
}
}
);
tela.add(rotulo1); tela.add(rotulo2);
tela.add(texto1); tela.add(texto2);
tela.add(limpar);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
Limpar app = new Limpar();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

public class ManipulacaoDeTabelas extends JFrame{


JButton botao,botao1;
JTextField texto;
JLabel rotulo;
public ManipulacaoDeTabelas(){
super("Manipulação de Tabelas");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("Entre com sua instrução: ");
texto = new JTextField(255);
botao = new JButton ("Executar Instrução SQL");
botao1 = new JButton ("Limpar");
rotulo.setBounds(10,20,200,20);
texto.setBounds(10,40,380,20);
botao.setBounds(20,80,180,20);
botao1.setBounds(250,80,80,20);
tela.add(botao);
tela.add(botao1);
tela.add(rotulo);
tela.add(texto);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
manipular();
}});
botao1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
texto.setText("");
texto.requestFocus();
}});
setSize(400,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
ManipulacaoDeTabelas app = new ManipulacaoDeTabelas();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void manipular(){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
Statement st = con.createStatement();
st.executeUpdate(texto.getText());
JOptionPane.showMessageDialog(null,"Dados Criado Com
Sucesso","Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE);
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n
Comandos Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}
}

import javax.swing.*;

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

import java.awt.*;
import java.awt.event.*;
public class NovaJanela extends JFrame{
JButton abrir;
Inicial segundajanela;
public NovaJanela(){
super("Abrir uma nova janela");
Container tela = getContentPane();
tela.setLayout(null);
abrir = new JButton("Abrir");
abrir.setBounds(100,50,80,20);
abrir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
segundajanela = new Inicial();
segundajanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
segundajanela.setVisible(true);
setVisible(false);
dispose();}});
tela.add(abrir);
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);}
public static void main(String args[]){
NovaJanela app = new NovaJanela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
private class Inicial extends JFrame{
JButton sair;
private Inicial(){
super("Menu Principal...");
Container tela = getContentPane();
tela.setLayout(null);
sair = new JButton("Sair");
sair.setBounds(50,50,100,20);
TBsair tsair = new TBsair();
sair.addActionListener(tsair);
tela.add(sair);
setSize(200,200);
setLocationRelativeTo(null);} }

private class TBsair implements ActionListener{


public void actionPerformed(ActionEvent evento){
int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o
programa?","Mensagem de saída",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();}}
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NovaJanela2 extends JFrame{
JButton abrir;
Inicial segundajanela;
public NovaJanela2(){
super("Abrir uma nova janela");
Container tela = getContentPane();
tela.setLayout(null);
abrir = new JButton("Abrir");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 8
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

abrir.setBounds(100,50,80,20);
abrir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
segundajanela = new Inicial(null,"Segunda Janela",true);
segundajanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
segundajanela.setVisible(true);
}});
tela.add(abrir);
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);}
public static void main(String args[]){
NovaJanela2 app = new NovaJanela2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
private class Inicial extends JDialog{
JButton sair;
public Inicial(Frame owner, String title,boolean modal){
super(owner,title,modal);
Container tela1 = getContentPane();
tela1.setLayout(null);
sair = new JButton("Sair");
sair.setBounds(50,50,100,20);
TBsair tsair = new TBsair();
sair.addActionListener(tsair);
tela1.add(sair);
setSize(200,200);
setLocationRelativeTo(null);} }
private class TBsair implements ActionListener{
public void actionPerformed(ActionEvent evento){
int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o
programa?","Mensagem de saída",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();}}
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class NovaJanela4 extends JFrame{
JButton abrir;
Inicial segundajanela;
public NovaJanela4(){
super("Abrir uma nova janela");
Container tela = getContentPane();
tela.setLayout(null);
abrir = new JButton("Abrir");
abrir.setBounds(100,50,80,20);
abrir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
segundajanela = new Inicial(null,"Segunda Janela",false);
segundajanela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
segundajanela.setVisible(true);
}});
tela.add(abrir);
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);}
public static void main(String args[]){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 9
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

NovaJanela4 app = new NovaJanela4();


app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}
private class Inicial extends JDialog{
JButton sair;
public Inicial(Frame owner, String title,boolean modal){
super(owner,title,modal);
Container tela1 = getContentPane();
tela1.setLayout(null);
sair = new JButton("Sair");
sair.setBounds(50,50,100,20);
TBsair tsair = new TBsair();
sair.addActionListener(tsair);
tela1.add(sair);
setSize(200,200);
setLocationRelativeTo(null);} }
private class TBsair implements ActionListener{
public void actionPerformed(ActionEvent evento){
int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o
programa?","Mensagem de saída",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();}}
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class OcultarExibir extends JFrame{
JLabel rotulo1, rotulo2;
JButton ocultar,exbir;
public OcultarExibir(){
super("Exemplo de ocultar e exibir componente");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("Rótulo 1");
rotulo2 = new JLabel("Rótulo 2");
ocultar = new JButton("Ocultar ");
exbir = new JButton("Exibir ");
rotulo1.setBounds(50,20,100,20);
rotulo2.setBounds(50,60,100,20);
ocultar.setBounds(100,100,80,20);
exbir.setBounds(250,100,80,20);
ocultar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setVisible(false);
rotulo2.setVisible(false);
}
}
);
exbir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo1.setVisible(true);
rotulo2.setVisible(true);
}
}
);
tela.add(rotulo1); tela.add(rotulo2);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 0
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

tela.add(ocultar); tela.add(exbir);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
OcultarExibir app = new OcultarExibir();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
public class PrimeiraJanela extends JFrame{
public PrimeiraJanela(){
super("Nossa primeira janela");
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
PrimeiraJanela app = new PrimeiraJanela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;
public class Relatorio extends JFrame{
private Connection con;
private JTable tabela;
public Relatorio(){
super("Agenda - Nomes" );
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do
Programa",JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(600,200);
setVisible(true);
}
public static void main(String args[]){
Relatorio app = new Relatorio();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buscaTabela(){
Statement st;
ResultSet res;
try{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("SELECT * FROM Cadastro ORDER BY Nome");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 1
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane( tabela );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex){
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){
Vector LinhaAtual = new Vector();
try{
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));
break;
case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
}

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;
public class Relatorio1 extends JFrame{
JLabel l;
JTextField t;
JButton b;
Inicial janela;
public Relatorio1(){
super("Agenda - Nomes" );
Container tela = getContentPane();
setLayout(null);
l = new JLabel("Nome: "); l.setBounds(20,20,100,20);
t = new JTextField(50); t.setBounds(20,50,250,20);
b = new JButton("Exibir Relatório"); b.setBounds(100,90,150,20);
tela.add(l);tela.add(t);tela.add(b);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
janela = new Inicial();
janela.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
janela.setVisible(true);
}});

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 2
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

setSize(400,200);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
Relatorio1 app = new Relatorio1();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class Inicial extends JFrame{
private Connection con;
private JTable tabela;
private Inicial(){
super("Agenda - Nomes" );
setSize(400,300);
setLocationRelativeTo(null);
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
try
{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do
Programa",JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
}
private void buscaTabela(){
Statement st;
ResultSet res;
try {
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("SELECT * FROM Nomes WHERE Nome
LIKE'%"+t.getText()+"%'");
res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do
{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane( tabela );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex) {
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd )
{
Vector LinhaAtual = new Vector();

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 3
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

try
{
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i))
{
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));
break;
case Types.INTEGER: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
}
}
catch(SQLException e) {
}
return LinhaAtual;
}
}
}

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;
public class Relatorio2 extends JFrame{
private Connection con;
private JTable tabela;
public Relatorio2(){
super("Agenda - Nomes" );
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do
Programa",JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(600,200);
setVisible(true);
}
public static void main(String args[]){
Relatorio2 app = new Relatorio2();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buscaTabela(){
Statement st;
ResultSet res;
try{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("SELECT
Tabela1.Cod,Tabela1.Nome,Tabela1.Idade,Tabela1.Dn,Tabela1.Sal,Tabela1.Def,Cadastro.Tel
efone_1,Cadastro.Telefone_2,Cadastro.Celular FROM Cadastro, Tabela1 WHERE
Cadastro.Nome=Tabela1.Nome");

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 4
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane( tabela ) ;
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex){
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){
Vector LinhaAtual = new Vector();
try{
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.INTEGER: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));
break;
case Types.NUMERIC: LinhaAtual.addElement(rs.getDouble(i));
break;
case Types.BIT: LinhaAtual.addElement(rs.getByte(i));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SenhaDigitada extends JFrame{
JPasswordField caixa;
JLabel rotulo, exibir;
JButton mostrar;
public SenhaDigitada(){
super("Exemplo com JPasswordField");
Container tela = getContentPane();
setLayout(null);
rotulo = new JLabel("Senha: ");
caixa = new JPasswordField(10);
exibir = new JLabel("A senha digitada é: ");
mostrar = new JButton("Mostrar");
exibir.setVisible(false);
rotulo.setBounds(50,20,100,20);
caixa.setBounds(50,60,200,20);
exibir.setBounds(50,120,200,20);
mostrar.setBounds(150,100,80,20);

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 5
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

mostrar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
String senha = new String(caixa.getPassword());
exibir.setVisible(true);
exibir.setText(senha);
}
}
);
tela.add(rotulo);
tela.add(caixa);
tela.add(exibir);
tela.add(mostrar);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){
SenhaDigitada app = new SenhaDigitada();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Soma extends JFrame{
JLabel rotulo1, rotulo2,exibir;
JTextField texto1,texto2;
JButton somar;
public Soma(){
super("Exemplo de soma");
Container tela = getContentPane();
setLayout(null);
rotulo1 = new JLabel("1º Número: "); rotulo2 = new JLabel("2º Número: ");
texto1 = new JTextField(5);texto2 = new JTextField(5);
exibir = new JLabel(""); somar = new JButton("Somar");
rotulo1.setBounds(50,20,100,20); rotulo2.setBounds(50,60,100,20);
texto1.setBounds(120,20,200,20); texto2.setBounds(120,60,200,20);
exibir.setBounds(50,120,200,20); somar.setBounds(150,100,80,20);
somar.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
int numero1,numero2,soma;
soma=0;
numero1 = Integer.parseInt(texto1.getText());
numero2 = Integer.parseInt(texto2.getText());
soma = numero1 + numero2;
exibir.setVisible(true);
exibir.setText("A soma é: "+soma);
}
}
);
exibir.setVisible(false);
tela.add(rotulo1); tela.add(rotulo2);
tela.add(texto1); tela.add(texto2);
tela.add(exibir); tela.add(somar);
setSize(400, 250);
setVisible(true);
}
public static void main(String args[]){

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 6
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

Soma app = new Soma();


app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
public class TamanhoFixo extends JFrame{
public TamanhoFixo(){
super("Uma janela não dimensionável");
setResizable(false);
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
TamanhoFixo app = new TamanhoFixo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
public class TestaConexao extends JFrame{
JButton botao;
public TestaConexao(){
super("Testando a Conexão...");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Verificar Conexão");
botao.setBounds(50,50,150,20);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try {
String url = "jdbc:odbc:Agenda";
String usuario = "";
String senha = "";
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection(url,usuario,senha);
JOptionPane.showMessageDialog(null,"Conexão estabelecida","Mensagem do
Programa",JOptionPane.INFORMATION_MESSAGE);
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexão não
estabelecida","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}});
tela.add(botao);
setSize(300, 150);
setVisible(true);
setLocationRelativeTo(null);
}
public static void main(String args[]){
TestaConexao app = new TestaConexao();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 7
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s

A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 8

Das könnte Ihnen auch gefallen