Você está na página 1de 208

A

Apostila de Java 2 Com Banco de Dados


1 Introduo
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 documentao 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 Programao em Java
3.1 Como programa em Java
3.2 Anatomia de uma Classe
3.3 Comentrios
3.4 O uso do ponto-e-vrgula
3.5 Tipos de dados
3.6 Converso de tipo
3.7 Operadores
3.8 Variveis
3.9 Funes matemticas
4 Introduo a interface grficas em Java
4.1 Entendo o Swing
4.11 Uso do JFrame na construo de janelas no aplicativo
4.12 - Janela normal
4.2 - Janela Maximizada
4.3 - Janela minimizada
4.4 Janela que no 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 rtulos na sua janela
5.1 - Criar os objetos JLabel
5.2 - Atribuir o contedo 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

6.4 Alinhamento do texto de uma caixa de texto


6.5 Alterao da cor de fundo da caixa de texto
7 Adicionando componentes JButton ou botes a sua janela
7.1 Boto somente com texto
7.2 Boto com texto e imagem
7.3 Boto somente com imagem
7.4 Adicionando vrios botes 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 boto 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 ao
10.1 Clicando no boto para fechar uma janela
10.2 Clicando no mostrar para descobrir a senha digitada
10.3 Clicando no boto somar e ser mostrada a soma dos nmeros
10.4 Clicando no boto limpar e as caixas de texto sero limpas
10.5 Ocultar e Exibir componentes
10.6 Desabilitar e Habilitar Exibir componentes
11 Apresentando a classe JList
11.1 Selecionando mltiplos 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 criao de caixas de combinao
12.1 Como criar uma caixa de combinao editvel
13. Entendimento e uso da classe JCheckBox
13.1 Iniciar um formulrio com uma caixa de seleo marcada.
13.2 Alterando a cor da letra de um JCheckBox
14 Uso da Classe JRadioButton para criar botes de opo
15 Fazendo um aplicativo com ComboBox CheckBox RadioButton

16 Como adicionar dica aos seus botes


16.1 Adicionar cores diferentes as dicas
17 Tipos de dilogos fornecidos pela classe JOptionPane
17.1 Como entender os dilogos de confirmao
17.2 Traduzir os botes de dilogos
17.3 Como obter dados por meio de dilogos do tipo prompt
17.4 Como fornecer os valores a serem selecionados em um dilogo
17.5 Entendimento e uso do mtodo showMessageDialog.
18 Maisculas e Minsculas
19 Adicionando Data nos seus aplicativos
20 Adicionando Horas ao seu aplicativo
21 Entendimento da classe JTextArea
21 Entendimento da classe JTextArea
21.1 Definio das barras de rolagem para os controles JTextArea
21.2 Controlando a quebra automtica 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 seleo como itens do menu JCheckBoxMenuItem
22.3 Usando botes de seleo como item do menu JRadioButtonMenuItem
22.4 Menu executando aes
23 Criando um menu de contexto Classe JPopupMenu
24 Uso da classe JToolBar para criar barra de ferramentas
25 Como criar janelas secundrias com o uso da classe JDialog
25.1 Como criar janelas secundrias modais
25.2 Como criar janelas secundrias no-modais
25.3 Como criar janelas secundrias 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

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 - Consideraes Iniciais
30.1 Anatomia de uma Conexo e Testando a Conexo
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 Avanadas
30.8 Atualizando Dados (UPDATE)
30.9 Excluindo Dados (DELETE)
30.10 Exibindo Dados em uma Lista
30.11 Exibindo relatrio com filtro e chamando outra janela

1 Introduo
1.1 Java: O que ?
O que faz ser to especial a ponto de atrair a ateno da imprensa e
programadores de todo mundo?
o fato de ter sido projetada levando em conta o que havia de melhor e pior
nos cinqenta anos de existncias das linguagens de programao. Java parte
do que deu ou no certo nas linguagens que a precederam ou lhe foram
contemporneas. E suas caractersticas fazem-na uma linguagem muito til
nestes tempos de interconectividade e migrao tecnolgica constantes.
Java totalmente orientada a objetos sua parente mais prxima 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 programao.
Criada pela Sun Microsystems, foi inicialmente destinada a pequenos
dispositivos eletrnicos e quase fracassou. Comercialmente s se tornou um
quando se voltou para a internet. Isto porque, graas a sua caracterstica
multiplataforma, possibilitou a incluso de pequenas aplicaes diretamente
nas pginas web, independente do sistema usado no computador do cliente.
A origem do nome Java por si s material para um livro inteiro. Existem muita
especulao 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 no inclua
a internet em suas pretenses. Hoje tem se mostrado a linguagem ideal para
desenvolvimento para internet e computao distribuda. Tambm est voltada
s origens, ao ser cogitada pelas grandes indstrias como linguagem de
programao para eletroeletrnicos e eletrodomsticos.
O principal responsvel pelo desenvolvimento da linguagem Java foi o
engenheiro James Gosling que, a servio Sun, comandou e orientou o grupo
de trabalho responsvel pelo desenvolvimento do ambiente de programao
Java. O incio 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.

1.3 Java: Funcionamento


Java uma linguagem de programao 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, seno a nica linguagem de programao que
permite ao programador criar um nico cdigo que roda sem alterao em
qualquer computador que possua uma Java Virtual Machine instalada.
justamente a JVM ou Mquina Virtual Java o segredo por trs da
caracterstica de multiplataforma, apresentada pelo ambiente de
desenvolvimento Java.
O diagrama seguinte ilustra o assunto. A independncia 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.

Cdigo Fonte
Arquivo.java

Interpretador
Java
(runtime Java ou
JVM Java
Virtual
Machine/Mquina
Virtual Java)
JVM para WIN32

Binrio Java
Arquivo.class

Compilador
Java

O compilador Java gera


um arquivo binrio com o
O cdigo fonte
mesmo nome do arquivo
um arquivo
gravado com a extenso.
digitado em
Compilador
Java. Esse arquivo o
qualquer editor de
Javac
programa em Java e
texto puro e salvo
pode ser executado em
com extenso
qualquer mquina que
.Java
possua a Java Virtual
Machine instalada.
como se tivssemos um
computador dentro do
outro (emulador).

JVM para
SOLARIS

JVM para Linux

2 O que preciso para programar em Java?


Uma das grandes vantagens de programar em Java e tambm um motivo que
faz a linguagem contar com uma legio de fs por todo o planeta est na
gratuidade de suas ferramentas de desenvolvimentos. Com extenso 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 verso 1.6.0, ou SDK Software Development Kit, da
verso 1.4.2 em diante. Mas conveniente que alm do JDK/SDK, voc
tambm use um Ambiente de Desenvolvimento Integrado ou IDE Integrated

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 exerccios desta apostila foram testados em duas configuraes:
Um AMD Duron 1000, com 128 de memria ram.
Um AMD Sempron 2600 com 1 GB de ram.
Creio que voc no ter problemas para atingir os mesmos resultados.
2.1 Baixando o WinZip
Baixe o Winzip a partir do site www.winzip.com. Usurios do Windows XP no
necessitam deste programa. Qualquer verso 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 verso para Windows, pois na mesma pgina encontram-se
verses para outros sistemas, como o Linux e Solaris. Site: www.sun.com.
2.3 Baixando a documentao do JDK/SDK
A instalao da documentao do JDK/SDK opcional, mas muito til no s a
quem est dando os primeiros passos na linguagem, como tambm para quem
j est na estrada h mais tempo e uma vez ou outra precisa recorrer
documentao. O nico inconveniente estar em ingls, um obstculo a quem
no domina este idioma. Mas pode ficar tranqilo porque a instalao da
documentao opcional. Baixe a documentao 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 amigvel o uso do ambiente. O JDK/DSK
continua sendo o verdadeiro responsvel pelo trabalho pesado.
Optamos pelo JCreator por ele ser gratuito, pequeno, fcil de usar, estvel e
cumpre o que promete: edita o cdigo-fonte, compila, executa e ajuda a
depurar erros. Outras duas caractersticas muito teis so endentaes
automticas e o uso de cores para diferentes partes do cdigo-fonte.
Baixe o JCreator LE que gratuito e atende as nossas necessidades.
Baixe no site www.jcreator.com.
Na mesma pgina em que voc encontra a verso gratuita est a verso Pro
que paga e s funciona por 30 dias. Tenha certeza de estar baixando a
verso LE que gratuita e atende perfeitamente aos nossos objetivos.

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 dilogo:

Clique em Next para avanar, aceitando o JCreator como editor associado aos
arquivos Java. Como j foi visto, os arquivos com a extenso Java nada mais
so do que arquivos texto contendo o cdigo-fonte escrito em linguagem Java.
Caso o JCreator no localize automaticamente a pasta na qual voc instalou o
JDK/SDK, clique na opo Browse para localiz-la. Depois de localizada
corretamente, clique em Next para avanar.

Se voc instalou a documentao do JDK/SDK, clique no Browse para localizala dentro da pasta de instalao do JDK/SDK. Depois de localizada
corretamente, clique em Finish para concluir o processo de configurao do

JCreator. Da prxima vez que for executado, estes procedimentos no sero


mais executados.

Tela inicial do JCreator

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
avanar, depois clicando no boto com as... para escolher a pasta onde voc
vai guardar seus arquivos. Na opo name digite o nome do seu arquivo Java.
E ao final clique em Finish.

A linguagem Java diferencia letras maisculas de minsculas. O A e o a, em


se tratando de programao em Java, so completamente diferentes. Portanto,
digite o cdigo apresentando, com a mxima ateno, sem se preocupar com a
endentao que automtica no JCreator. Digite esse cdigo:
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);
}
}

Depois que voc digitou o cdigo, preciso compil-lo. Compilar um programa


o ato de transformar esse cdigo-fonte em executvel ou, no caso do Java,
transformar o cdigo-fonte em classe, pronta para ser interpretada pela
Mquina Virtual Java, da qual falamos anteriormente. Para compilar um cdigofonte no JCreator, basta clicar sobre o boto Complie File. Ao fazer isso, ser
criada uma classe de com o nome de teste.class.
Boto Compile File:

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

E se o JCreator encontrar algum erro durante a compilao ou execuo de


classe, no 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 prtico. Troque a letra t (minscula) do nome do programa teste,
pela letra T (maisculas) e compile novamente.
Repare que alm da mensagem de erro, o JCreator aponta a linha da provvel
causa do erro.
Nota: toda vez que voc fizer alguma alterao no cdigo-fonte ter de
compilar o cdigo-fonte de novo, para que as mudanas reflitam na classe.

Mas se tudo correu bem durante a compilao do teste.Java, agora voc tem
uma classe pronta para se interpretada pela Mquina Virtual Java, Basta clicar
no boto execute File do JCreator.

Esta classe que compilamos e executamos foi uma forma fcil e rpida de
testar o ambiente e tambm de prepar-lo para os captulos 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 exerccios e tarefas deste apostila so 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 necessrio, pois
so tarefas fundamentais para a compreenso e prtica dos prximos
captulos.
3 Conceitos fundamentais de Programao em Java
3.1 Como programa em Java
O processo utilizado na programao em Java praticamente o mesmo das
outras linguagens: Digitar -> Compilar-> Executar -> Depurar quando
necessrio. O diagrama seguinte ilustra o processo:
Incio

Digitao do Cdigo
.Java

Compilar
.class

Problemas na
compilao?

Depurao
sim

no
Executar
.class

Fim
A

3.2 Anatomia de uma Classe


Como vimos no captulo anterior, a linguagem Java permite a criao de
programas independentes, chamamos de aplicaes. Tambm permite a
criao de pequenas aplicaes que rodam no navegador web, as applest
scripts de servidor, os servlets tambm criao de componentes. Uma classe
padro:
1. class nomeclasse {
2. public static void main(String args[]){
3. //implementar cdigo.
4. }
5.}
A numerao das linhas no faz parte do programa. Ela serve para ajudar na
identificao de cada linha, as quais vamos analisar a partir de agora.
public um modificador de classes e mtodos. Significa que a classe ou
mtodo acessvel externamente a esta classe. Isto permite que uma classe
possa utilizar alguma funcionalidade de outra classe.
static um outro modificador de mtodos e indica que o mtodo deve ser
compartilhado por todos os objetos criados a partir desta classe.
void usado quando o mtodo no retorna valor.
main mtodo principal. Obrigatrio em aplicaes, pois indica ao compilador
o incio da execuo 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 instrues do
programa so colocadas.
Java e Case Sensitive
A linguagem Java sensvel ao contexto. Isto quer dizer que para o
compilador, palavras iguais grafadas em maisculas ou minsculas so
diferentes.
3.3 Comentrios
Os comentrios servem para facilitar o entendimento de um programa e
documentar o cdigo. Java possui algumas formas de inserir comentrios:
// (duas barras) para inserir comentrios de uma nica linha.
/* Exemplo de comentrios
/* e */ - (barra + asterisco e asterisco + barra) para comentrios de mais de
uma linha.
/* Exemplo de comentrios */
A

3.4 O uso do ponto-e-vrgula


No final de cada instruo usa-se o ponto-e-vrgula. No incio voc pode ficar
confuso quanto a usar ou no o ponto-e-vrgula, mas questo de tempo para
habituar. Alm disso, o compilador informa o erro por ausncia ou uso indevido
do ponto-e-vrgula.
int a, b;

a = 10; b = 20;

total = a + b;

3.5 Tipos de dados


Java possui oito tipos primitivos que servem para armazenar nmeros inteiros,
ponto flutuante, valores booleanos e caracteres. Vamos conhece-las.
Inteiros:
Tipo
byte
short
Int
long

Tamanho
1 byte
2 bytes
4 bytes
8 bytes

Ponto Flutuante:
Tipo
float
double

Tamanho
8 byte
8 bytes

Tipo
char

Tamanho
2 bytes

Tipo
boolean

Tamanho
1 byte

Caractere:

Booleano:

Todos esses tipos de variveis so escritos em letras minsculas e so


usados, principalmente, na declarao de variveis:
byte idade;

short CEP;

char controle;

Alm dos oitos tipos bsicos, uma varivel 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 so os seguintes:
\n new linha (quebra de linha)
\t tab (tabulao)
\f formfeed (avano de formulrio)
\ aspas duplas
\ aspas simples
\\ - barra invertida
\r return (retorno do carro)
\b backspace (retorno apagando)
A

3.6 - Converso 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
operaes matemticas com esses dados, precisamos converte-los em
nmeros.
Tabela de converso de Tipos
Para converter String em
int
Float
Double

Faa isto
int novovalor = Integer.parseInt(valor)
float novovalor = Integer.parseInt(valor)
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 tambm 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);
Converso entre tipos tambm pode ser implcitas ou explcitas. Veja os
exemplos:
Converso implcita:
short numero1 = 10;
long numero2 = numero1; // convertemos short para long
Converso explcita
long numero1 = 10;
byte numero2 = (byte) numero1; //convertemos long em byte

3.7 Operadores
Operadores
Nome
Operador
+
Adio
Subtrao
/
Diviso
*
Multiplicao
%
Mdulo
Negativo (unrio)
++
Incremento

--

Exemplo de uso
A+B
A-B
A/B
A*B
A%B
A =-A
A++
++A
A
--A

Decremento

Operadores lgicos e relacionais


Operador
Nome
Exemplo de uso
!
NOT (no lgico)
!A
&&
AND (E lgico)
A && B
||
OR (OU lgico)
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
~
Inverso
&
E (and)
|
OU (OR)
^
XOU (XOR)
<<
Deslocamento esquerda
>>
Deslocamento direita
=
atribuio

Exemplo de uso
~A
A&B
A|B
A ^B
A << B
A >> B
A=B

3.8 Variveis
Variveis so elementos mais bsicos que um programa manipula. Uma
varivel um espao reservado na memria do computador para armazenar
um determinado tipo de dados. As variveis so declaradas e, opcionalmente,
inicializadas com um valor qualquer. Caso voc no atribua nenhum valor, o
Java atribuir um valor default. Variveis podem ter qualquer nome, desde que
no sejam nomes de palavras chaves que so usadas nos programas Java. E
as variveis no podem ser digitadas com espao e nem acentos.
Exemplos: nome123;

nome_da_mae;

NomeDoPai;

Nome

3.9 Funes matemticas


O que ? Java possui diversas funes matemticas que podem ser utilizadas
para simplificar clculos e expresses.
Como usar? O uso das funes matemticas muito simples:
Funo

Significado

Math.abs(valor)
Math.sqrt(valor)
Math.cos(valor)
Math.sin(valor)
Math.tan(valor)
Math.acos(valor)
Math.asin(valor)
Math.atan(valor)
Math.round(valor)
Math.floor(valor)
Math.ceil(valor)
Math.log(valor)
Math.min(valor,valor1)
Math.max(valor,valor1)
Math.PI
Math.E
Math.pow(base,potencia)
(Int) (Math.random()*100)

Retorna ao valor absoluto


Retorna a raiz quadrada
Retorna o co-seno
Retorna o seno
Retorna a tangente
Retorna ao arco co-seno
Retorna ao arco seno
Retorna ao arco tangente
Arredonda para seu inteiro mais prximo
Arredonda o valor de um nmero para baixo
Arredonda o valor de um nmero para cima
Retorna o valor do logaritmo natural
Retorna o valor mnimo entre 2 nmeros
Retorna o valor mximo entre 2 nmeros
Retorna o valor de PI
Valor da base do logaritmo natural
Potenciao
Gera nmeros aleatrios

4 Introduo a interface grficas em Java


Agora vamos falar sobre o pacote javax.swing, sua relao com o pacote
java.awt e introduziremos a classe JFrame, componente principal dos
aplicativos de interface grfica em Java.
4.1 Entendo o Swing
Contrrio ao que muitos desenvolvedores e estudantes de Java pensam, o
Swing no um subttulo do AWT (Abstract Window Toolkit). Em vez disso, o
Swing visto como uma cama disposta confortavelmente sobre o AWT.
praticamente impossvel 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 grficos
destinados a facilitar a construo das interfaces grficas para aplicativos e
applets em verses 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
Containe
r
Window

Button

List

CheckBox

Label

Frame
A

Esta hierarquia no 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. Ateno deve ser
classe Container, descendente direta da classe Component.
Um Component tem uma representao grfica, de modo que ele possa ser
exibido na tela e fornea meios de interao com o usurio. A classe
Component define os mtodos, propriedades e eventos que pode ser aplicados
a todos os componentes derivados dessa classe, includo 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 esto associados s
capacidades de renderizao de interfaces grficas 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
recomendao que voc investigue na documentao on-line a diferena, por
exemplo, entre a funcionalidade de um button e um JButton
4.11 Uso do JFrame na construo de janelas no aplicativo
Se voc j leu outro material sobre interfaces grficas em Java, deve estar se
perguntando por que preferimos no iniciar a apostila falando de caixas de
texto, rtulos, botes e outros componentes de interface. A razo simples. A
janela do aplicativo a parte mais importante da interface, alm de ser o
fundamento sobre o qual os demais componentes sero construdos. Mas, o
fato de no reservamos muita ateno ao estudo das janelas dos aplicativos
provm do uso excessivo dos IDEs visuais (os famosos Ambientes de
Desenvolvimento Integrado).
A classe JFrame uma verso melhorada de Frame que traz consigo suporte
aos componentes Swing. Essa classe fornece todas as propriedades, mtodos
e eventos que precisamos para construir janela, tais como as que nossos
usurios esto acostumados a visualizar em seus sistemas. Ora, o usurio
sabe que a janela de um aplicativo pode ser minimizada, maximizada,
redimensionada, e etc. Ento vamos demonstrar a classe JFrame serve aos
nossos propsitos.
A janela principal de um aplicativo de interface grfica em Java criada como
uma instncia da classe JFrame (com exceo de Applets). A classe JFrame
herda diretamente de Frame, como mostra a figura seguinte:
Compone
Containe
r
Window

Button

List

JFrame

Frame
A

CheckBox

Labe
l

Consideraes a serem levadas antes de comear a programa.


Quando o usurio encontrar esse smbolo
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 mtodo 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 grfica
que estiver escrevendo: import javax.swing.*;
Em seguida temos a definio da classe principal:
public class PrimeiraJanela extends JFrame
{
// a implementao 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,
mtodos e eventos que precisamos para que o aplicativo possa ser minimizado,
maximizado e fechado por meios dos botes na barra de ttulos. Dentro da classe
temos o construtor padro, que ser invocado quando uma instncia 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); }

Uma classe JFrame pode ser instanciada de duas maneiras: app = new()
que cria uma instncia da classe que inicialmente invisvel, mas sem um ttulo
na barra de ttulos, ou: app = new(String Ttulo)
que cria uma instncia da classe inicialmente invisvel e com um objeto String
representando o texto da barra de ttulos. Assim, no construtor da classe
PrimeiraJanela, invocamos o segundo construtor da superclasse JFrame
fornecendo o texto que queremos como ttulo da janela.
Aps a definio do ttulo da janela, temos uma chamada ao mtodo setSize:
setSize(300, 150); - (300 Altura e 150 largura)
Finalmente exibimos a janela efetuando uma chamada ao mtodo setVisible o
qual apresenta a seguinte sintaxe: setVisible(true);
Para finalizar o cdigo para a janela, temos a definio do mtodo main():
public static void main(String args[])
{
PrimeiraJanela app = new PrimeiraJanela();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
Na primeira linha criamos uma instncia da classe PrimeiraJanela e a atribumos
referncia app, ento acessamos o mtodo 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 usurio tentar fechar a janela, seja
clicando no boto fechar na barra de ttulos 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
usurio tentar fechar o aplicativo, ou seja, o programa
HIDE_ON_CLOSE
continua sua execuo. O uso desse valor s
justificado quando queremos que a janela ou algum de
seus componentes esteja disponvel para acesso e
manipulao, mas no queremos que isso seja visvel
aos olhos do usurio.
Faz com que o usurio no seja capaz de fechar a
janela. Neste caso voc deve efetuar algum
DO_NOTHING_ON_CLOSE processamento e fechar a janela, baseado em alguma
ao especfica no seu cdigo.
Libera, ou seja, retira da memria, tanto a janela do
aplicativo quanto seus componentes. A diferena entre
DISPOSE_ON_CLOSE
este valor e HIDE_ON_CLOSE que o primeiro oculta
a janela e s ento libera da memria.

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 no pode ser redimensionada: setResizable(false);
Por padro, as janelas dos aplicativos em Java podem ser redimensionadas
em tempo de execuo, ou seja, durante a execuo do programa. Algumas
vezes no queremos que o usurio seja capaz de alterar o tamanho da janela.
Com a lista abaixo podemos fazer com que a janela no seja redimensionada:
import javax.swing.*;
public class TamanhoFixo extends JFrame{
public TamanhoFixo(){
super("Uma janela no dimensionvel");
setResizable(false);
setSize(300, 150);
setVisible(true);
}
public static void main(String args[]){
TamanhoFixo app = new TamanhoFixo();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

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 pde ser
apresentada agora. Isso se deve ao fato de a cor do fundo ser definida no
para a classe JFrame, mas para o painel de contedo, ou seja o objeto
Container que contm 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 no 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);
}
}

Temos que importar o pacote import java.awt.*;, pois a classe Container est
nele. Veja como uma instncia dessa classe criada e atribuda referncia
tela: Container tela = getContentPane();
Aps essa declarao o tela um objeto Container que representa a janela do
aplicativo. Por meio dessa referncia 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 possvel.
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));

4.8 Definindo um cone para a janela do aplicativo


Nada contra o cone padro das janelas dos aplicativos Java. Mas, seria bem
interessante se pudssemos 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);
}
}

Aps executar o aplicativo, observe como o cone padro (a xcara de caf) foi
alterada, substituda pela imagem que foi adicionada no aplicativo.
A definio de um cone para a janela pode ser realizada com apenas duas
linhas de cdigo: ImageIcon icone = new ImageIcon("teste.gif");
setIconImage(icone.getImage());
Na primeira linha criamos uma instncia da classe ImageIcon e a atribumos
referncia 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");
Aps iniciamos a classe ImageIcon, fazemos uso do mtodo 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

5 Adicionando componentes JLabel ou rtulos na sua janela


Freqentemente chamado de rtulo, esse componente raramente tem seu
contedo alterado e, quando usado corretamente, possibilita manipulaes
bem interessantes, como veremos a segui. Vamos comear 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:

Para entender melhor como funciona o programa destacamos alguns trechos


do programa, sempre lembrando que temos que no comeo do programa
importar esses pacotes que adicionam contedos a janela:
import javax.swing.*;
import java.awt.*;
5.1 - Apos fazermos as importaes vamos criar os objetos do tipo JLabel:
JLabel rotulo1,rotulo2,rotulo3,rotulo4;
5.2 - Em seguida atribuir o contedo ao JLabel:
rotulo1 = new JLabel ("Nome");
rotulo2 = new JLabel ("Idade");
rotulo3 = new JLabel ("Telefone");
rotulo4 = new JLabel ("Celular");
5.3 - Prximo 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

5.4 - Prximo passo definir a cor da letra dos componentes JLabel, lembrando
que se esses objetos no 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 opo 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 itlico
Font.PLAIN
fonte normal
Font.BOLD+Font.ITALIC negrito e itlico
E a numerao 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
usurio.
E finalmente o mtodo tela que representa a janela dever ser chamado, onde
vai exibir o rtulo o contedo do JLabel na janela.
tela.add(rotulo1);
tela.add(rotulo2);
tela.add(rotulo3);
tela.add(rotulo4);

5.7 Adicionando imagem ao componente JLabel


Possvel exibir imagem em rtulos como instncias da classe JLabel. Tais
rtulos 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);
}
}

6 Adicionando componentes JTextField ou caixa de texto na sua janela


A classe JTextField possibilita a criao de caixas de texto de uma nica linha.
Os usos mais freqentes desse controle so para receber e validar dados
informados pelo usurio do aplicativo. Essa classe herda a maioria de seus
atributos, eventos e mtodos 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
apaream na janela.
A

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 mtodo 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 tambm 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 tambm 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 Alterao da cor de fundo da caixa de texto
Como visto anteriormente podemos efetuar essa alterao chamando o
comando: texto1.setBackground(Color.blue);

7 Adicionando componentes JButton ou botes a sua janela


A classe JButton herda de AbstractButton, uma classe que herda de
JComponet e define o comportamento bsico para os botes e itens de menu.
Como ocorre com instncias da classe JLabel, objetos da classe JButton
podem conter texto, texto e imagem ou apenas imagens.Seguindo os mesmo
mtodos dos outros aplicativos de como adicionar componentes na janela esse
tambm segue o mesmo modelo.
7.1 - Boto somente com texto: Veja o exemplo de boto sem imagem:
import javax.swing.*;
import java.awt.*;
public class ExemploBotao extends JFrame{
JButton boto;
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 - Boto com texto e imagem: Exemplo de um boto 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);
}
}

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 boto, botao = new JButton
("Abrir",icone); e com o objeto tela, tela.add(botao); adicionamos o boto a
janela.
7.3 - Boto somente com imagem: Exemplo de boto 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 boto com o aplicativo anterior de boto com
imagem basta voc retirar o texto de dentro da linha que somente a imagem
ser adicionada, veja a linha:
Linha do boto com texto e imagem: boto = new JButton (Abrir,icone);
Linha do boto somente com imagem: boto = new JButton (icone);
Aplicativo com os trs botes

7.4 Adicionando vrios botes 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 ("Prximo >>");
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);
}
}

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);

7.7 Qual boto reagir ao pressionamento da tecla enter


Voc pode passar o foco para um determinado boto assim que pressionar a
tecla enter, Com o comando getRootPane().setDefaultButton(). Basta digitar
o comando getRootPane().setDefaultButton(botao);
boto o nome do boto que voc definiu no programa, nesse exemplo definir
o ltimo boto.
Quando voc pressionar a tecla Enter o boto 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:

8 - Adicionando componentes JPasswordField


A classe JPasswordField possibilita a criao de caixas de texto para a
digitao de senhas. Esta classe herda diretamente de JTextField e, portanto,
permite a aplicao de todas as tcnicas 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 tambm pode definir uma cor para letra conforme seu gosto usando essa
linha caixa.setForeground(new Color(115,99,128));

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 parnteses 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 validao e exibio de dados formatados em tempo
real, ao seja, medida que seu contedo inserido. Esse componente
conhecido nas linguagens Visual Basic, Delphi, C++ como MaskEdit, ou
simplesmente caixa de texto tipo mscara.
A vantagem de usar uma caixa de texto tipo mscara que o usurio forado
a digitar os dados no formato especificado. O controle no aceita contedo que
no siga os padres 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 mscara que ser usada na caixa de texto.
Para definir os caracteres que sero aceitos, voc deve usar a seguinte tabela:
Smbolo
#
?
A
*
U
L

Valor Aceito
Um nmero
Uma letra
Uma letra ou um nmero
Qualquer contedo ser aceito pelo controle
Uma letra convertida em maisculo
Uma letra convertida em minsculos

Obtida a tabela vamos ver essa classe em ao. 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);

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 variveis globais:


FormattedTextField cep,tel, cpf, data;
MaskFormatter mascaracep,mascaratel, mascaracpf, mascaradata;
O cdigo que inicializa a mscara foi inserido em um bloco try{ } de modo a
evitar uma exceo:
try{
mascaracep = new MaskFormatter("#####-###");
mascaratel = new MaskFormatter("(##)####-####");
mascaracpf = new MaskFormatter("#########-##");
mascaradata = new MaskFormatter("##/##/####");
mascaracep.setPlaceholderCharacter(_);
mascaratel.setPlaceholderCharacter(_);
mascaracpf.setPlaceholderCharacter(_);
mascaradata.setPlaceholderCharacter(_);
}
catch(ParseException excp){}

Observe o uso do smbolo # para permitir somente valores numricos e uma


chamada ao mtodo setPlaceholderCharacter para definir o caractere que
ser exibido como marcador para a mscara, geralmente o caractere de
sublinhado. Essa mscara 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 cdigos 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 cdigos 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 cdigos Java, estarem


adicionados no aplicativo, veja os efeitos com as cores:

10 Fazendo um JButton executar uma ao


10.1 Clicando no boto 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.*;
import java.awt.*;
import java.awt.event.*;

- pacote que exibe contedos na janela


- pacote que exibe contedos na janela
- pacote que trabalha com os eventos

Como j visto em outros aplicativos:


Declarar o componente como JButton: JButton botaosair;
Atribuir o texto ao boto: botaosair = new JButton ("Sair");
Posicionar o boto na janela: botaosair.setBounds(100,50,100,20);
E chama o objeto tela para exibir o componente: tela.add(botaosair);
Explicando o funcionamento do boto:
botaosair.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
}
);
addActionListener Adicionar ao a lista que estar dentro do boto.
new ActionListener Chamando nova ao a ser listada.
public void actionPerformed(ActionEvent e)
performance da ao que o evento pblico chamara que ser o exit.
System.exit(0); - Finaliza o aplicativo
Use sempre essa lista para fazer qualquer boto 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 usurio
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);

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 fcil 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 boto criamos uma varivel
chamada senha do tipo String, onde ela recebe uma String que vem da caixa
da senha e ento convertida em caracteres normal. E depois ser habilitado
novamente o JLabel.

10.3 Clicando no boto somar e ser mostrada a soma dos nmeros


J nesse aplicativo alguns mtodos novos foram aplicados, esse pede um
pouquinho de nossa ateno, alguns componentes foram colocados ao lado
para no ficar muito extenso e ser mais fcil 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 Nmero: ");
rotulo2 = new JLabel("2 Nmero: ");
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[]){
Soma app = new Soma();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

A habilitao do boto j foi explicado no aplicativo anterior, o que foi


acrescentado nesse aplicativo, foram os comandos que trabalham com
converso de nmeros.
Foram declaradas trs variveis do tipo inteira: int numero1, numero2, soma;
Foi atribudo zero a varivel soma, para a varivel ser iniciada vazia: soma=0;
Como texto1, texto2 so String, melhor dizer texto para armazen-las nas
variveis numero1 e numero2, ser necessrio converte a String em nmeros.
Nesse caso estamos convertendo o texto1 em inteiro para isso usamos o
Integer.parseInt(), e armazenamos na varivel numero1 que inteira.
Isso ocorrer para a texto2 e a varivel numero2.
numero1 = Integer.parseInt(texto1.getText());
numero2 = Integer.parseInt(texto2.getText());
Depois de convertido os valores agora s fazer a soma e armazenar na
varivel 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 variveis do tipo Float, usaremos: Float.parseFloat();
Para variveis do Double, usaremos Doubl.parseDouble();
A

10.4 Clicando no boto limpar e as caixas de texto sero 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 Nmero: ");
rotulo2 = new JLabel("2 Nmero: ");
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 vo 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();
atribudo null dentro das caixas, pois nulo significa vazio e requestFocus()
passa o foco para a caixa selecionada pelo usurio.

10.5 Ocultar e Exibir componentes


Esse aplicativo s para teste no 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("Rtulo 1"); rotulo2 = new JLabel("Rtulo 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);
}
}

10.6 Desabilitar e Habilitar Exibir componentes


Nada de diferente tambm 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("Rtulo 1"); rotulo2 = new JLabel("Rtulo 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);
}
}

11 Apresentando a classe JList


A classe JList permite a criao 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 srie de itens dos quais o
usurio 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 sero exibidos na lista. O aplicativo
seguinte apresenta uma janela que contm uma caixa de listagem e um boto.
O usurio pode selecionar uma entre oito cidades. Ao clicar no boto 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","So Paulo","Minas Gerais","Esprito 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 boto Exibir. Observe


que o texto do item selecionado exibido em uma caixa de mensagem. Vamos
analisar o cdigo e ver como isso foi possvel.

O primeiro passo declarar uma instncia da classe JList chamada lista:


JList lista;
Em seguida declaramos e inicializamos um vetor de objetos String que contm
os itens que estaro disponveis na list:
String cidades[] = {"Rio de Janeiro","So Paulo","Minas Gerais","Esprito
Santo", "Bahia","Pernambuco","Rio Grande do Sul","Acre"};
Os itens do vetor cidades so atribudos caixa de listagem por meio da
seguinte instruo:
lista = new JList(cidades);
importante observar que o vinculo entre a caixa de listagem e o vetor cidades
no termina aps essa instruo. Mais tarde, se alguma alterao for feita nos
elementos do vetor, voc poder atualizar a lista com uma chamada ao mtodo
repaint da classe JComponent.
lista.rapaint();
Aps a atribuio dos itens do vetor cidades lista, temos que definir a
quantidade de elementos que sero visveis sem a necessidade de acionar as
barras de rolagem isso feito na linha:
lista.setVisibleRowCount(5);
Como queremos que o usurio seja capaz de selecionar apenas um item por
vez efetuaremos uma chamada ao mtodo setSelectionMode e usaremos
uma das constantes da classe ListSelectionModel para definir a lista como
sendo de seleo nica:
lista.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Uma lista no fornece barras de rolagem por padro. Dessa forma, uma
instncia da classe JScrollPane usada para essa finalidade:
JScrollPane painelRolagem = new JScrollPane(lista);
Quando clicamos no boto exibir, o mtodo actionPerformed da classe publica.
Chamado:
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText(o estado : +lista.getSelectedValue().toString());
}
} );
Ns efetuamos uma chamada ao mtodo 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.

11.1 Selecionando mltiplos itens em uma caixa de listagem


No tpico 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. possvel, porm, selecionar mais de um
item em uma caixa de listagem. Tudo que temos a fazer alterar o valor da
constante fornecida para o mtodo setSelectionMode. Veja os valores
possveis:
Valor da Constante
SINGLE_SELECTION

Resultado
Apenas um item pode ser selecionado de
cada vez.
Vrios itens em um intervalo contguo podem
ser selecionados.
Vrios podem ser selecionados sem a
restrio de intervalo.

SINGLE_INTERVAL_SELECTION
MULTIPLE_INTERVAL_SELECTION

O exemplo seguinte uma pequena modificao do exemplo anterior que


mostra como vrios 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","So Paulo","Minas Gerais","Esprito 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);
}
}

Execute o cdigo 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 boto
exibir, e voc ver a caixa de mensagem exibindo os valores dos itens
selecionados.
Este exemplo apresenta poucas modificaes. A primeira delas a
modificao do valor fornecido para o mtodo setSelectionMode:
lista.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

Veja que agora a lista permite que vrios itens sejam selecionados. A outra
modificao aconteceu no evento do boto 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 mtodo chamado getSelectedValues que retorna um
vetor de objetos da classe Object. Este valor contm 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 prxima palavra que ser exibida e no ao lado.
Criar um vetor chamado selecionados e atribui a ele os itens retornados pelo
mtodo getSelectedValues. Mantenha em mente que temos um vetor objetos
da classe Object. Esquecer-se deste detalhe pode ser desastroso. O lao for
interage com cada um dos elementos do vetor selecionados, efetuando
chamadas ao mtodo String de cada um e concatenando o resultado obtido
com o valor da varivel resultados.
Cada vez que selecionados jogar um item dentro de resultado, cada item cada
item vai com a opo de pular uma linha por isso os itens so exibidos um em
baixo do outro.
A caixa de mensagem JOptionPane ser estuda mais profundamente nos
prximos captulos da apostila. A opo showMessageDialog, que dizer uma
mensagem de dialogo ser exibida ao usurio.

11.2 Trocando a cor da letra do JList


possvel 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 alteraes citadas acima.

12 uso da classe JComboBox na criao de caixas de combinao


Objetos da classe JComboBox so usados para a criao de controles
conhecidos como caixas de combinao, combo box ou lista drop-down. A
diferena entre a caixa de listagem e caixa de combinao 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. Alm, disso, caixas de combinao so
usadas quando o espao insuficiente para acomodar uma caixa de listagem.
A classe JcomboBox herda de JComponent, como mostra o relacionamento
seguinte:
Component

Button

List

Container

CheckBox

Label

Window
J Component
Frame
JComboBox
A

O aplicativo seguinte apresenta uma janela que contm uma caixa de


combinao e um boto. Quando selecionamos um item no JComboBox e
pressionamos o boto, 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","So Paulo","Minas Gerais","Esprito
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 anlise voc perceber que muitas das tcnicas que

usamos anteriormente podem ser aplicadas quando estiver lidando com caixas
de combinao. 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 combinao:
String cidades[] = {"Rio de Janeiro","So Paulo","Minas Gerais","Esprito
Santo","Bahia","Pernambuco","Rio Grande do Sul","Acre"};
Temos um vetor de oito elementos que so atribudos caixa de combinao
com a seguinte instruo:
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 visveis 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 combinao editvel
Se voc experimentou com o exemplo anterior deve ter percebido que a caixa
de combinao somente leitura, ou seja, estamos limitados aos itens
disponveis para a escolha.
Existe, porm, uma forma de permitir que o usurio digite o valor desejado em
uma caixa de combinao. Basta efetuar uma chamada ao mtodo setEditable
fornecendo o valor true como argumento:
lista.setEditable(true);

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJComboBox2 extends JFrame{
JComboBox lista;
String cidades[] = {"Rio de Janeiro","So Paulo","Minas Gerais","Esprito
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 usurio ser capaz de escolher um dos itens disponveis ou digitar sua
escolha. comum em campos editveis o pressionamento da tecla enter aps
a entrada da informao no campo. Desse forma, importante efetuar uma
chamada ao mtodo addActionListener da caixa de combinao e definir o
procedimento a ser efetuado. O trecho do cdigo seguinte mostra como exibir o
valor que o usurio acaba de informar:
exibir.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
rotulo.setText("o estado : "+lista.getSelectedItem().toString());
}
}
);

13. Entendimento e uso da classe JCheckBox


A classe JCheckBox usada quando precisamos de controles como
caixas de seleo que podem ser marcados ou desmarcados pelo usurio e
oferecem feedback visual de modo percebemos seu estado atual. O uso de
caixas de seleo freqente em ambientes em que o usurio deve selecionar
uma ou mais das opes oferecidas.
O aplicativo seguinte apresenta uma janela com quatro caixas de
seleo e um boto. Marque uma das opes e pressione o boto. 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();

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 anlise do cdigo veremos como isso foi possvel. Por ora, execute o
aplicativo, selecione as opes desejadas e clique no boto. Veja se o
resultado confere com sua escolha.
O primeira passo para a construo deste exemplo foi declarar as referncias
global das instncias da classe JCheckBox:
JCheckBox primeira,segunda,terceira,quarta,quinta;
Mais adiante voc entender por que essa varivel precisa ser global. Em
seguida temos a criao de cinco caixas de seleo. Veja o cdigo 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.

Prximo passar atribuir s caixas de seleo 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 mtodo


setMnemonic.
Prximo passo posicionar as caixas de seleo no formulrio, chamada ao
mtodo 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 seleo 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 rtulo vazio e o boto de exibir j foram visto em exerccios anteriores.


Quando voc clicar no boto o contedo que voc selecionou vai aparecer no
rtulo vazio.
Vamos entender agora o boto 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 mtodo criamos uma varivel chamada escolhas do


tipo String e definimos se contedo inicial como vazio. Em seguida temos um
lao IF, toda vez que voc clicar no boto exibir ele far a verificao e se a
caixa de seleo for marcada o mtodo isSelected() testa o retorno se valor
for verdadeira, o aplicativo armazenar o contedo na varivel escolhas.
Toda vez que voc marca uma caixa de seleo o mtodo setSelected()
recebe o valor true (verdadeiro), e quando voc desmarca a caixa de seleo o
valor do mtodo setSelected(), recebe o valor de false (falso).

13.1 Iniciar um formulrio com uma caixa de seleo 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 mtodo setSelected(true) para a caixa de seleo desejada:


primeira.setSelected(true);

13.2 Alterando a cor da letra de um JCheckBox


Exemplo disponvel 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 botes de opo
As caixas de seleo fornecem uma maneira conveniente de oferecer ao
usurio alguns itens dos quais ele pode escolher um, vrios ou todos. Existem,
no entanto, situaes em que apenas um dos itens pode ser selecionado. Para
esses casos temos os botes de opo. Botes de opo tm seu uso
justificado em casos em que apenas uma das opes 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 botes de opo.
Quando voc clicar em exibir uma mensagem exibir o valor selecionado e
quando voc clicar em outra opo 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("So 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);

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);
}
}

Explicando o aplicativo:
Para o exemplo criamos os botes de seleo 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 pblica veja:


public class ExemploRadioButton extends JFrame{
ButtonGroup grupo;

Botes de opo so agrupados usando uma instncia da classe ButtonGroup:


ButtonGroup grupo;

Para adicionar um boto 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, porm manter em mente que a classe ButtonGroup no um


continer para objetos. Essa classe serve apenas ao propsito de agrupar os
botes para que somente um possa ser selecionado por uma vez.
Se caso o usurio quiser colocar um boto padro, aquele que j esteja
marcado quando iniciar a janela use: primeiro.setSelected(true);
Mtodo: setSelected(true) marca o boto
setSelected(false) desmarca o boto
Mtodo: isSelected(true) verifica se o boto esta marcado
isSelected(false) verifica se o boto esta desmarcado

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 Itlico");
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;
//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){

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.

Vamos estudar o aplicativo:


1 Passo: declarar as variveis 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 contedo que sero exibidos na tela


Rtulos
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("Itlico");
normal = new JCheckBox("Normal");
negritoitalico = new JCheckBox("Negrito Itlico");
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 opes


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 variveis que vai guardar o tamanho e o estilo da
fonte.

tamfonte=12;

estilo=Font.PLAIN;

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 comparao com o comando IF, se o contedo da string do ComboBox for
igual a cor que voc escolheu, ento setForeground coloca a cor escolhida no rtulo
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 varivel tamfonte recebe o tamanho
escolhido, e modifica o tamanho do rtulo texto, o valor da varivel tamfonte s ser
modificado se voc alterar e escolher outro tamanho, por isso a varivel tamfonte
declarada pblica uma vez colocado valor nela, todos os mtodos que tiver utilizando
essa varivel faz referncia 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));}});

Quando voc selecionar o CheckBox do negrito, ele atribui o estilo negrito (BOLD) a
varivel estilo, desmaca o CheckBox do normal, itlico e do negrito itlico, e exibir na
tela o rtulo texto com a fonte negrito.
Coloca a fonte em itlico
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 itlico, ele atribui o estilo itlico (ITALIC) a
varivel estilo, desmaca o CheckBox do normal, negrito e do negrito itlico, e exibir na
tela o rtulo texto com a fonte em itlico.
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
varivel estilo, desmaca o CheckBox do negrito, itlico e do negrito itlico, e exibir na
tela o rtulo texto com a fonte com estilo normal sem efeito.
Coloca a fonte em negrito e itlico
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 itlico, ele atribui o estilo negrito e
itlico (Font.BOLD+Font.ITALIC) a varivel estilo, desmaca o CheckBox do negrito,
itlico e do normal, e exibir na tela o rtulo texto com a fonte com estilo negrito e
itlico.
A varivel estilo pblica por isso quando voc atribui valor nela, todos os mtodos
que for utiliz-la exibir no rtulo o estilo da varivel estilo.

9 Passo: utiliza o mtodo tela.add() para adicionar os mtodos 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);

16 Como adicionar dica aos seus botes


O processo de adicionar dicas aos botes sempre uma boa idia
definir as dicas de ferramentas para que o usurio, ao posicionar o ponteiro do
mouse sobre o controle (Boto), possa ter mais informaes 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 Botes 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("Boto usado para abrir algo");
botao2.setToolTipText("Boto 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 botes foi definida nas linhas:
botao1.setToolTipText("Boto usado para abrir algo");
botao2.setToolTipText("Boto que ser usado para sair");

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. possvel acessar e manipular algumas das propriedades
das dicas de ferramenta de modo a adequ-las s cores propostas em seus
aplicativos. uma tcnica raramente usada, mas que surte efeitos bem
interessantes.
As dicas de ferramenta do Windows tem o amarelo como cor de fundo.
Veja como possvel 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 Botes 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("Boto usado para abrir algo");
botao2.setToolTipText("Boto 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);

17 Tipos de dilogos fornecidos pela classe JOptionPane


Vamos usar constantemente a classe JOptionPane para exibir caixas de
mensagens mostrando resultados de operaes. Nestes tpicos vamos estudar
os diferentes tipos de dilogos, assim como seus construtores mais
importantes.
Os dilogos de mensagens fornecidos pela classe JOptionPane so do tipo
modal, ou seja, quando o dilogo exibido, tudo que estiver sendo executado
no aplicativo suspenso at que a janela do dilogo seja fechada. Isso
importante, uma vez que dependemos da resposta do usurio para continuar o
processamento normal do programa.
Os dilogos da classe JOptionPane podem ser exibidos com chamadas aos
seguintes mtodos estticos:

Mtodo
showConfirmDialog

Uso
Usado para pedir confirmao, ou
seja, o usurio tem a opo de
responder sim, no ou cancelar.
Usado para obter entrada para o
programa.
Usado para exibir mensagem sobre a
execuo de alguma operao.

showInputDialog
showMessageDialog

17.1 Como entender os dilogos de confirmao


Dilogos de confirmao so usados para perguntar ao usurio se uma
determinada operao deve ser iniciada, continuada ou interrompida.
Aplicativos em Java geralmente usam esse tipo de dilogo para confirmar a
gravao de arquivos, fechamento de janelas, etc.
Exemplo:
JOptionPane.showConfirmDialog(null,Fechar?,Fechar,JOptionPane.YES_NO_OPTION);

Este mtodo retorna um valor inteiro correspondente opo escolhida pelo


usurio. Em dilogos de confirmao esse retorno pode ser um dos trs
valores seguintes:
YES_OPTION indica que o usurio escolheu a opo Yes ou Sim.
NO_OPTION indica que o usurio escolheu a opo No ou No.
CANCEL_OPTION indica que o usurio escolheu a opo Cancel ou
Cancelar.

Os parmetros para o mtodo so:


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

parentComponent determina a janela na qual o dilogo ser exibido.


Geralmente forncemos o valor null para esse parmetro.
message o texto a ser exibido no dilogo.
title o texto para a barra de ttulo do dilogo.
optionType valor inteiro equivalente s opes disponveis para o tipo de
dilogo, ou seja, YES_NO_OPTION, ou YES_NO_CANCEL_OPTION.
A listagem abaixo mostra como os dilogos de confirmao podem ser usados.
O Aplicativo pergunta se o usurio deseja realmente fechar a janela, caso voc
clique no yes a janela ser fecada, caso contrrio o janela no ser fechada.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploBotaoSair1 extends JFrame{
JButton botao;
public ExemploBotaoSair1(){
super("Exemplo de Botes com Dilogos de confirmao");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,50,100,20);
botao.setToolTipText("Boto que finaliza a janela");
tela.add(botao);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
int opcao;
opo=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);
}
}

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

Se voc clicar em Yes a janela ser fechada e caso contrrio ela continuar.
Passos para colocar o boto a janela e dicas de botes j foram vistos
anteriomente, e para chamar o caixa de confirmao basta voc clicar no sair,
e o evento ser executado, mtodo para chamar o evento tambm 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 varivel do tipo inteira com o nome de opo. Essa varivel
vai receber a resposta do JOptionPane, e vai armazenar o valor que ser
escolhido na caixa de confirmao. E o comando IF, que vai fazer a
comparao
se
o
contedo
da
varivel
opo
for
igual
JOptionPane.YES_OPTION, ele retorna a verdadeiro e chama o mtodo
System.exite(0) e finaliza a janela.
17.2 Traduzir os botes de dilogos
Seria interessante exibir os textos dos botes em portugus? A classe
JOptionPane fornece um mtodo chamado showOptionDialog que permite
personalizar o texto dos botes de dilogos. No tem muita diferena 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 Botes Traduzidos");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,50,100,20);
botao.setToolTipText("Boto que finaliza a janela");
tela.add(botao);
botao.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

int opcao;
Object[] botoes = {"Sim","No"};
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 botes de dilogos traduzidos foram criados em portugus como itens de um vetor.
O vetor com essas duas opes, s apareceram dois botes, caso voc queira o
cancelar basta adcionar a lista do vetor = {Sim,No,Cancelar}. Object [ ] botoes =
{"Sim","No"};
Em seguida a varivel opcao que do tipo inteira receber o resultado da chamada ao
mtodo showOptionDialog: Varivel inteira: int opcao;
Vetor com os botes traduzidos: Object[] botoes = {"Sim","No"};
Varivel opo que esta recebendo o resultado do showOptionDialog:
opcao=JOptionPane.showOptionDialog(
null, determina a janela na qual o dilogo ser exibido. Geralmente forncemos o
valor null para esse parmetro.
"Deseja mesmo fechar a janela?", o texto a ser exibido no dilogo.
"Fechar", o texto para a barra de ttulo do dilogo.
JOptionPane.YES_NO_OPTION, - valor inteiro equivalente s opes disponveis
para o tipo de dilogo, ou seja, YES_NO_OPTION, ou YES_NO_CANCEL_OPTION.
JOptionPane.QUESTION_MESSAGE, determina o tipo da mensagem a ser exibida,
exemplo pergunta, erro, informao, etc.
null, - cone a ser exibido no dilogo, cone personalizado.
botoes,botoes[0]); - Um vetor de objetos, geralmente do tipo string, representando as
possiveis escolhas, ou seja, os botes para o dilogo.

17.3 Como obter dados por meio de dilogos do tipo prompt


Dilogos do tipo prompt so usados quando precisamos recebe entrada de
dados, geralmente fornecidos pelo usurio do aplicativo. A forma mais bsica
de um dilogo do tipo prompt obtida pelo mtodo showInputDialog com a
seguinte sintaxe: showInputDialog(mensagem);
Quando o usurio digita o contedo solicitado e pressiona o boto OK, o
contedo da caixa atribudo a varivel nome. E o contedo dessa varivel
ser escrito dentro de um rtulo na janela. Se o boto cancel for acionado
acontecer um erro no aplicativo. Como voc pode perceber boa parte da caixa
de dilogo esta em ingls. Infelizmente no possvel traduzir esse dilogo
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("Boto 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","No"};
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);
}
}

Caixa do InputDialog
Quando voc clicar no Ok.
Veja o resultado, o nome vai aparecer todo em maisculo

17.4 Como fornecer os valores a serem selecionados em um dilogo


O uso de dilogos prompt para obter entrada do usurio muito conveniete,
mas h situaes em que o usurio deve apenas selecionar um dos valores
fornecidos pelo aplicativo. Para essas situaes voc pode usar o seguinte
mtodo 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);
}
}

17.5 Entendimento e uso do mtodo showMessageDialog.


Como o leitor j conhece todos os parmetros, nos determinamos apenas no
parmetro messaType. aqui que definimos o tipo de mensagem que ser
exibido.
Os
valores
possveis
so:
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("Informao");
exclamacao = new JButton("Exclamao");
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 informao","Mensagem de
Informao",JOptionPane.INFORMATION_MESSAGE,null);}});
exclamacao.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,"Voc escolheu exclamao","Mensagem de
Exclamao",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);
}
}

Tela inicial do aplicativo

Quando voc clicar no boto a mensagem correspondente vai aparecer.

Veja um trecho de cdigo que produz a segunda mensagem:


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

18 Maisculas e Minsculas
Nada como voc entrar com os dados em minsculos e obter sua sada em
maisculos, ou vice versa. Para colocar a sada em maisculo utilize o mtodo:
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 sadas maisculas");
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 ExemploMinusculas extends JFrame{
JButton copiar,limpar;
JLabel rotulo1,rotulo2;
JTextField texto1,texto2;
public ExemploMinusculas(){
super("Exemplo de sadas minsculas");
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 minsculos, basta voc chamar o mtodo toLowerCase(), se voc


digitar a letra minscula, quando voc clicar em copiar, o texto da primeira caixa vai
ficar maisculas e a segunda fica minsculas. E o boto limpar serve para limpar as
duas caixas e coloca o foco para a primeira caixa.

19 Adicionando Data nos seus aplicativos


O aplicativo abaixo mostra dos tipos de data, somente com nmeros 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","Tera - Feira","Quarta - Feira",
"Quinta - Feira","Sexta - Feira","Sbado"};
String meses[]={"Janeiro","Fevereiro","Maro","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); } }

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);
}
}

Vamos criar uma classe privada com o nome de HORAS vamos definir os
parmetros 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 dgitos, e coloca a hora no rtulo com uma
string.
Criar uma ao 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 mtodo time.start(), para que
o relgio possa movimentar os segundos.

Aplicativo bem interessante execute veja como funciona.

21 Entendimento da classe JTextArea


A classe JTextField permite a criao de caixas de textos que aceitam a
entrada de apenas uma linha de texto. A classe JTextArea permite a entrada e
manipulao de mltiplas linhas de texto. Emobra a classe JTextArea fornea
uma srie de mtodos teis para a manipulao de seu contedo, algumas
operaes mais avanadas, tais como formatar e aplicar estilos diversos ao
texto de controle, so possveis apenas com o uso da classes JTextPane e
JeditorPane. Esta apostila no aborda estas duas classes mas, voc poder
pesquisa-las na documentao 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
nmero de linhas e colunas. Veja a sintaxe para esse construtor:
JTextArea(int linhas, int colunas).

A listagem seguinte apresenta um aplicativo que contm um rtulo, uma rea


de texto. Somente para o usurio 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 ("Endereo");
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. Comeamos definindo uma


varivel chamada texto que servir para instanciarmos a rea de texto:
JTextArea texto;
A rea de texto criada com a seguinte instruo:
texto = new JTextArea(20,30);
Nosso controle vai exibir 20 linhas de texto e 30 colunas. importante observar
que esses valores definem apenas o contedo que ser visvel no controle e
no a quantidade de texto que poder ser inserida.

21.1 Definio das barras de rolagem para os controles JTextArea


O aplicativo que digitamos no tpico anterior apresentou o uso da classe
JTextArea para construir reas de texto que aceitem mais de uma linha de
contedo. O leitor deve ter percebido que, se a quantidade de texto exceder o
espao reservado para o controle, parte de seu contedo no poder ser
visualizado devido ausncia das barras de rolagens. A listagem seguinte
uma pequena modificao 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 ("Endereo");
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);
}
}

Como este aplicativo bem semelhante ao do tpico anterior, vamos nos


concentrar apenas nos trechos de cdigos relevantes adio das barras de
rolagem.
Definindo as variveis: 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 instncia da classe JTextArea da forma usual. Em
seguida a linha: painelrolagem = new JScrollPane(texto);
Cria uma instncia da classe JScrollPane fornecendo a referncia texto como
argumento. importante observar que, ao usar esse construtor, as dimeses
do painel de rolagem sero definidas de modo acomodar a rea de texto criada
previamente.
Por padro, as barras de rolagem definidas com o construtor anterior sero
exibidas somente quando o contedo da rea de texto exceder sua capacidade
de exibio. Neste exemplo optamos por sempre mostrar as barras de rolagem.
Isso foi conseguido com as duas instrues seguintes:
painelrolagem.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROL
LBAR_ALWAYS);
painelrolagem.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_S
CROLLBAR_ALWAYS);
O aparecimento ou no das barras de rolagem vertical e horizontal controlado
pelos mtodos setVerticalScrollBarPolicy e setHorizontalScrollBarPolicy.
Esses dois mtodos aceitam os valores de constantes na classe JScrollPane.
Para que seus aplicativos sigam os padres predefinidos, use as constantes
que exibiro as barras de rolagem somente quando forem necessrias.
Neste aplicativo fizemos uso da classe JPanel para inclui as barras de
rolagem. Com isso temos mais controle sobre a disposio dos componentes
que estamos usando. Ela se destaca apenas um truque que usamos para
definir o espaamento de todos os controles corretamente.
painel = new JPanel();
Para finalizar a anlise, 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 tabela seguinte relaciona essas constantes e descreve seus uso:


Constante
HORIZONTAL_SCROLL_AS_NEEDED

Uso
Exibe a barra de rolagem horizontal
somente quando for necessrio.
A barra de rolagem horizontal nunca
exibida.
Define que a barra de rolagem horizontal
deve ser exibida sempre.
Exibe a barra de rolagem vertical
somente quando for necessrio.
A barra de rolagem vertical nunca
exibida.
Define que a barra de rolagem vertical
deve ser exibida sempre.

HORIZONTAL_SCROLL_NEVER
HORIZONTAL_SCROLL_ALWAYS
VERTICAL_SCROLL_AS_NEEDED
VERTICAL _SCROLL_NEVER
VERTICAL_SCROLL_ALWAYS

21.2 Controlando a quebra automtica de linhas


Por padro, controles criados como instncia da classe JTextArea no
oferecem a funcionalidade de quebra automtica de linhas. Isso incoveniente
em algumas situaes em que o usurio digita longos trechos de texto no
componente. Imagine algo em torno de 50 a 100 palavras sendo exibidas em
apenas uma linha. Nada elegante. possvel forar a quebra de linha
automtica nos objetos JTextArea com uma chamada ao mtodo
setLineWrap. Este mtodo aceita os argumentos true ou false. Voc tem que
usar juntamente com o setLineWrap o mtodo setWrapStyleWord para que
haja a quebra de linha acontena entre palavras, se a prxima palavra no
couber na linha atual, deve ser deslocada para a prxima linha. Este mtodo
aceita os argumentos true ou false.
Veja a sintaxe:
texto.setLineWrap(true);
texto.setWrapStyleWord(true);
Aplicativo disponvel 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 disponvel com o nome de ExemploJTextArea4.java

22 Adicionando menus a um aplicativo Java


Menus so uma parte integrante de qualquer aplicativo de interface
grfica. Seu uso ajuda a agrupar o acesso as funcionalidades do programa em
lugares j conhecidos pelo usurio e evita a poluio desnecessrias de
componentes na tela do aplicativo.
Menus so criados como objetos das classes JMenurBar, JMenu,
JMenuitem, JCheckBoxMenuItem e JRadioButtonMenuItem. Todas essas
classes tm sua relevncia e uma aplicao de cada um ser apresentada em
seguida. Por ora, saiba que o menu pode ser adicionados apenas aos objetos
de classes que fornecem o mtodo JMenuBar. A classe JMenuBar serve para
criar a barra de menus. J o JMenu adiciona os itens do menu.J os itens dos
menus so colocados com JMenuItem.
O Aplicativo seguinte apresenta uma barra de menus, que contm o
menu opes, 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("Opes");
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);
}
}

Vamos analisar as partes mais importantes deste cdigo:


Declarar na rea pblica a varivel 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 mtodo
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 Opes criado com a seguinte instruo:
opcoes = new JMenu("Opes");
Depois anexado a barra de menus: barra.add(opcoes);
Observe o o uso do mtodo 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 opes:
limpar = new JMenuItem("Limpar");
fonte = new JMenuItem("Fonte");
sair = new JMenuItem("Sair");
Lembrando de declarar as variveis que iro receber os itens do menu como
JMenuItem: JMenuItem limpar,fonte,sair;
Agora vamos anexar os itens no menu opes:
opcoes.add(limpar);
opcoes.add(fonte);
opcoes.addSeparator(); Adiciona um linha separadora no menu
opcoes.add(sair);

Exemplo do aplicativo acima sendo execurado

22.1 Como adicionar submenus a um item do menu


Sbmenus podem ser adicionados a um determinado item de menu para tornar
o agrupamento lgico ainda mais eficiente. Essa tcnica 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("Opes");
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);
}}

Vamos analisar o aplicativo:


As variveis que no aplicativo anterior foram declaradas como JMenuItem,
para que possam ser anexado a submenus elas tero que mudar de classe e
passar a ser da classe JMenu. Veja:
JMenu opcoes,fonte,cor;

Observe como o item Fonte do menu


Opes tem uma seta para a direita,
indicando que tem nesse item trs
submenus, Cor, Estilo e Tamanho. O
item Cor tambm 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 sero 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);

22.2 Como usar caixa de seleo como itens do menu JCheckBoxMenuItem


Neste tpico vamos mostrar a tcnica que usa as caixas de seleo nos itens
do menu. A vantagem de usar caixas de seleo como itens de menu que
voc pode marcar e desmarcar itens sem a exigncia de que no mnimo um
dos itens esteja selecionado.
Caixas de seleo como itens do menu so criadas como instncias da classe
JCheckBoxMenuItem. As propriedades, mtodos e eventos dessa classe so
semelhantes aos da classe JCheckBox, de modo que voc no ter nenhuma
dificuldade em us-la em seus aplicativos.
A listagem seguinte mostra como podemos criar as caixas de seleo, 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("Opes");
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("Itlico");
negritoitalico = new JCheckBoxMenuItem("Negrito e Itlico");
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);
}
}

Vamos analisar o aplicativo:


Declarar as variveis que vo receber as caixas de seleo:
JCheckBoxMenuItem normal, negrito, italico, negritoitalico;
Anexar os estilos as caixas de seleo:
normal = new JCheckBoxMenuItem("Normal");
negrito = new JCheckBoxMenuItem("Negrito");
italico = new JCheckBoxMenuItem("Itlico");
negritoitalico = new JCheckBoxMenuItem("Negrito e Itlico");
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);

22.3 Usando botes de seleo como item do menu JRadioButtonMenuItem


Botes de seleo pode ser adicionados a um menu como instncia 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 contm o Menu Opes, 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 seleo (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", "Itlico", "Negrito e Itlico"};
public ExemploDeMenu4(){
super("Exemplo de Menus com JRadioButtonMenuItem");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opes");
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

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 modificaes do anterior veja:

1 Passo:
Para este exemplo vamos usar dois vetores, veja as declaraes:
JCheckBoxMenuItem nomeE[];
JRadioButtonMenuItem tamanhoF[];
Um vetor para a caixa de seleo (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 boto de seleo (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 instnciasda 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 opes dos onde voc s poder escolher um
item de cada submenu.
3 Passo:
Criamos dois vetores do tipo String que serviro para definimos os valores dos
itens do menu.
String tam[] = {"12","14","16","18"};
String est[] = {"Normal", "Negrito", "Itlico", "Negrito e Itlico"};
O primeiro para tamanho da fonte e o segundo para o estilo.
4 Passo:
Criar os submenus:
O submenu tamanho criado com a seguinte instruo:
tamanho = new JMenu("Tamanho");
O submenu estilo criado com a seguinte instruo:
estilo = new JMenu("Estilo");

5 Passo:
Em seguinda inicializamos as referncias dos grupos:
grupoE = new ButtonGroup();
grupoT = new ButtonGroup();
6 Passo:
Atribuir a quantidade de itens a caixa de seleo:
nomeE = new JCheckBoxMenuItem[4];
Atribuir a quantidade de itens ao boto de seleo:
tamanhoF = new JRadioButtonMenuItem[4];
7 Passo:
Para instanciar os itens do menu Cor, usamos o seguinte lao for:
for(int i = 0; i < 4; i++){
nomeE[i] = new JCheckBoxMenuItem(est[i]);
estilo.add(nomeE[i]);
grupoE.add(nomeE[i]);
}
Esse lao executado uma vez para cada um dos valores contidos no vetor
est que no nosso caso so quatro estilo (normal, negrito, itlico, negrito e
itlico). A cada interao atribumos ao item de menu atual um dos valores do
vetor est, adicionamos o item ao menu Estilo e tambm ao grupo de botes
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
condio 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 lao executado uma vez para cada um dos valores contidos no vetor
tam que no nosso caso so quatro estilo (12, 14, 16, 18). A cada interao
atribumos ao item de menu atual um dos valores do vetor tam, adicionamos o
item ao menu Tamanho e tambm ao grupo de botes 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 condio o for encerrado
e o menu recebe os tamanhos.

OBS: Quando usamos vetores para criar itens de menus no podemos


adicionar teclas de atalho.

22.4 Menu executando aes


Quando um determinado item selecionado, o cdigo do aplicativo deve
detectar a seleo e efetuar as aes determinadas. Esse procedimento fcil.
Uma vez que a classe JMenuItem herda abstrao de botes e fornece o
mtodo addActionListener.
No aplicativos adicionamos ao exemplo um componente JTextArea, para usar
as opes dos menus Limpar, Cor, Estilo e Tamanho. Use o menu Limpar para
apagar todo o contedo do JTextArea. Use a caixa de seleo para definir os
estilos da fonte do JTextArea. Os estilos possveis so: normal, negrito, itlico,
negrito e itlico. E utilize o boto de seleo para obter o tamanho da fonte do
JTextArea. Os tamanhos possveis so: 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", "Itlico", "Negrito e Itlico"};
JTextArea texto;
JPanel painel;
JScrollPane rolagem;
int estilofonte, tamfonte;
public ExemploDeMenu5(){
super("Exemplo de Menus executando aes");
Container tela = getContentPane();
tela.setLayout(null);
estilofonte=Font.PLAIN;
tamfonte=12;
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opes");
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);
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);

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();
} }
}

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
usurio deseja fechar o aplicativo ser exibida, caso o usurio escolha sim o
aplicativo ser fechado. claro que aqui usamos uma classe annima. Onde
declaramos uma varivel inteira chamada resposta, e atribumos ela ao
JOptionPane que vai exibir uma mensagem na tela, quando o usurio escolher
a opo, a varivel resposta recebe esse valor, e depois executado o lao IF,
se o contedo da varivel resposta for igual a 6 ento o IF, chama o mtodo
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(); } }

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 varivel que vai receber o contedo da classe privada:
Variavel trattamanho recebe a referncia da classe privada TratadorT.
Variavel tratestilo recebe a referncia da classe privada TratadorE.
TratadorT trattamanho = new TratadorT();
TratadorE tratestilo = new TratadorE();
Chama a varivel que esta fazendo referncia a classe privada que vai
executar a ao do menu:
tamanhoF[i].addItemListener(trattamanho);
nomeE[i].addItemListener(tratestilo); }
OBS: O mtodo repaint(), sempre chamando nas classes, ele serve para
atualizar o estilo, fonte ou a cor escolhida.

23 Criando um menu de contexto Classe JPopupMenu


Menus de contexto ou menu popup tm a mesma funcionalidade dos menus
convecionais. A nica diferena que menus de contexto so exibidos quando
clicamos com o boto 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 boto direito sobre a rea de edio de texto. As chances de um
menu de contexto ser exibido so enormes. Em Java menus de contexto so
criados como objetos da classe JPopupMenu. Os itens do menu so criados a
partir da classe JMenuItem, de modo que voc pode usar todas as tcnicas
que vimos nos tpicos anteriores.
O aplicativo seguinte cria um menu de contexto para uma rea de texto e
oferece as opes 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

}});

}
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 boto 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 annima MouseAdapter e a fornecemos


como argumento para o mtodo 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 boto direito na rea de texto e o mtodo


mouseReleased disparado, efetuamos uma chamada ao mtodo
isPopupTrigger da classe MouseEvent. Esse mtodo retorna verdadeio se o
evento foi disparado com o boto direito do mouse. Satisfeita a condio, o
menu de contexto exibido. Observe os parmetros para o mtodo show da
classe JPopupMenu:
show(Componet invoker, int x, int y);
opcoes.show(e.getComponent(),e.getX(),e.getY()); }});
O parmetro invoker o componente para o qual o menu de contexto esta
definido. Os parmetros x e y so as coordenadas do mouse no momento em
que o menu de contexto chamado.

24 Uso da classe JToolBar para criar barra de ferramentas


Uma barra de ferramentas um continer para agrupar botes e outros
controles usados com maior freqncia 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 so 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 botes no 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();

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 botes da barra de ferramentas, usamos o
seguinte vetor de objetos com seis posies da classe ImageIcon:
imagens = new ImageIcon[6];
O nome e o caminho das imagens so 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 prximo passo instanciar os objetos da classe ImageIcon com as imagens
do vetor cones. Isso feito no lao seguinte:
for(int i = 0;i < 6;i++){
imagens[i] = new ImageIcon(icones[i]);
}

So criados seis botes com imagens veja seguintes instrues:


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]);
Prximo passo adicionar dicas aos botes 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 botes da barra de ferramentas:
UIManager.put("ToolTip.background",SystemColor.info);
Trocar a cor da letra da dica dos botes da barra de ferramentas:
UIManager.put("ToolTip.foreground",Color.blue);
Os botes so adicionados barra de ferramentas pelo mtodo 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 botes 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 tcnica 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 mtodo 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);

25 Como criar janelas secundrias com o uso da classe JDialog


Janelas secundrias so modais ou no-modais que dependem da janela
principal do aplicativo. Por meio dessas janelas podemos efetuar novas
operaes acessando at mesmo os componentes da janela principal. Janelas
secundrias so criadas como instncias da classe JDialog, e fornece
praticamente todas as funcionalidades da classe JFrame. Isso quer dizer que
podemos obter o painel de contedo de um objeto dessa classe e incluir
componentes, interagir com o usurio, enviando dados para a janela principal.
25.1 Como criar janelas secundrias modais
O aplicativo seguinte o nosso ponto de partida para o estudo da classe
JDialog. Trata-se de uma janela principal com apenas um boto. Quando voc
clicar no boto abrir, uma nova janela com apenas um boto 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 sada",JOptionPane.YES_NO_OPTION);

if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();}}
}
}

Primeira janela

Segunda Janela

Janela Modal Voc no pode clicar na janela de traz:

Vamos analisar o aplicativo:


Aps a execuo do aplicativo, clique no boto Abrir. Voc visualizar a
segunda janela com o boto de Sair. O entendimento do cdigo muito
importante para o uso correto de janelas secundrias em um aplicativo Java.
Importante acompanhar atentamente a anlise 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);
}
}

Declaramos a varivel que vai fazer referncia ao boto sair: JButton sair;
Declaramos a referncia segundajanela que receber a Incial:
Inicial segundajanela;
Classe privada Incial: Esta classe herda JDialog. Observe os parmetros para
seu construtor: public Inicial(Frame owner, String Title, boolean modal);
O parmetro owner usado para especificar a janela principal a partir da qual
a janela secundria ser chamada. O parmetro title serve para fornece o ttulo
para janela, modal especifica se a janela ser modal ou no-modal. Uma
janela modal tem o foco e deve ser fechada antes que o usurio 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 mtodos para adicionar componentes na janela:
Container tela1 = getContentPane();
tela1.setLayout(null);
Em seguinda, adicionamos o texto a ser exibido no boto Sair, logo aps
posicionamos o boto na janela, criamos a varivel que vai fazer referncia a
classe privada TBsair, depois adicionamos essa classe ao boto sair pelo
evento addActionListener, e chamamos o mtodo add, e adicionamos o boto
na janela secundria.
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 secundria:
setSize(200,200);
Por final centralizamos a janela:
setLocationRelativeTo(null);
Voltando janela principal agora, para chamar a janela secundria, usamos o
seguinte trecho de cdigo:
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);
}
}
);

Quando clicamos no boto e o mtodo actionPerformed da classe annima


ActionListener chamado, instanciamos um objeto da janela secundria e o
atribumos referncia 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
memria. 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
tpico para posicionar a janela secundria no centro da tela quando ela for
exibida.
Classe privada TBsair (Tratar Boto Sair)
private class TBsair implements ActionListener{
public void actionPerformed(ActionEvent evento){
int status = JOptionPane.showConfirmDialog(null,"Deseja realmente
fechar o programa?","Mensagem de
sada",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();
}
}
}
Sem muita modificaes dos exemplos anteriores, o que tem de diferente que
quando voc clicar em Sim para finalizar a janela secundria, o aplicativo
coloca a janela invisvel com o mtodo setVisible(false); e depois retira da
memria com o mtodo dispose().

25.2 Como criar janelas secundrias no-modais


Janela no-modais so aquelas onde voc, pode fazer uso da janela principal.
Exemplo do aplicativo de janela no-modal, veja o exerccio
NovaJanela4.java.
Modificaes a serem observadas:
segundajanela = new Inicial(null,"Segunda Janela",false);
Para janela no-modais, o ltimo parmetro deve ser false.
Para janela modal, o ltimo parmetro deve ser true

25.3 Como criar janelas secundrias com JFrame


Como a classe JDialog, tambm podemos criar uma janela com a classe
JFrame, quando voc iniciar esse aplicativo, ser executada a tela principal
com um boto chamado Abrir, quando voc abrir a janela secundria com o
boto Sair, a janela principal fica invisvel com o mtodo setVisible(false); e
depois retirada da memria com o mtodo dispose(), j na janela secundria
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 sada",JOptionPane.YES_NO_OPTION);
if (status == JOptionPane.YES_OPTION)
{segundajanela.setVisible(false);
segundajanela.dispose();}}
} }

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 necessrios
para sua execuo. Quando todos os recursos esto 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 no
possuem a barra de ttulos, os botes de sistema (fechar, minimizar, etc) e a
borda caractersticas 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 tela de splash mostrada na figura exibida por cinco segundos. Decorrido esse
perodo, ela ser fechada e a janela principal do aplicativo ser exibida. Vamos
analisar todo o cdigo comeando com a classe TelaInicial:
Esta classe estende JWindow, portanto no ter bordas, barra de ttulos ou botes 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 obtm uma referncia ao painel de contedo 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 rtulo. A ltima linha adiciona o rtulo janela.
Em seguida temos a instncia da classe ActionListener.
ActionListener fechar = new ActionListener(){
public void actionPerformed(ActionEvent e){
setVisible(false);
dispose();
principal();}};
Quando o mtodo actionPerformed dessa classe chamado, ns ocultamos a tela de
splash, a liberamos da memria e efetuamos uma chamada ao mtodo principal da
classe principal.
Para disparar o mtodo 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 instrues: inicio = new TelaInicial();
inicio.setVisible(true);
E, para finalizar, eis o mtodo principal:
public void principal(){
setVisible(true);}
O nico proposito deste mtodo tornar a janela principal visvel, uma vez que no
podemos acessa-la a partir da classe TelaInicial.

27 Banco de Dados Relacionais


27.1 O que um Banco de Dados?
Um banco de dados tpico formado por uma ou mais Tabelas. As tabelas, por
sua vez, so formadas por COLUNAS e LINHAS. As COLUNAS, tambm
chamadas de CAMPOS, servem para dar nome ao espao reservados a
determinada informao. J as LINHAS de uma tabela, tambm chamadas de
REGISTROS ou TUPLAS. So espaos reservados para a informao a ser
armazenada.
No exemplo apresentado em seguida temos trs CAMPOS, de nome ID,
NOME e TELEFONE. Os campos do nome a cada coluna do Banco de Dado
se indicam qual informao ser armazenada em cada coluna. Trs LINHAS,
contendo informaes de trs pessoas. Note que, enquanto os campos so
nicos e no se repetem, as linhas so em quantidade quase infinita e podem
se repetir total ou parcialmente.
Nota: Neste caso em particular, as informaes do campo ID so geradas pelo prprio
SGBD por meio da autonumerao; portanto, no so inseridas pelo usurios e
tambm no se repetem.
ID
NOME
TELEFONE
1
Tulio Maravilha
1234-5678
2
Otavio Mesquita
1234-6789
3
Luiz Pedro
1234-9658
(AutoNumerao)
|
O conjunto apresentado forma uma tabela de nome CADASTRO que, por sua vez,
forma o banco de dados AGENDA.

Um Banco de Dados tpico 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 informao que ele contm. Exemplo de nomes para Banco de
Dados: colecoes, vendas, cadastro, etc. Evitamos o uso de palavras acentuadas e
separadas por espao, tendo em vista a maior compatibilidade possvel. Se necessrio
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 tambm vale a regra de evitar acentuao na nomeao 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 digitao ou outro
processo: mecnico, ptico, magntico, etc. So esses registros que formaro as
linhas da tabela. Os dados inseridos podem e devem usar acentuao e palavras com
espao em branco entre si.

2 - Nome da
Tabela

1 - Nome do
Banco de Dados

3 - Nome e tipo de
dados das COLUNAS

4 Entrada de
Dados(digitao, etc)

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 conseqncia
imediata, temos a reduo do nmero de campos de cada tabela, reduo no
tempo de entrada de dados e mais velocidade no processamento.
Banco de Dados VENDAS
Tabela Clientes

Tabela Pedidos

Nmero do Cliente

Nmero do Pedido

Nome do Cliente

Nmero do Cliente

Endereo

Descrio 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 Nmero do Cliente. Se este vnculo no
fosse criado, no haveria como saber qual cliente determinado pedido, a no
ser que inclussemos em cada pedido todos os dados do cliente. Com o uso
dos relacionamentos, este procedimento desnecessrio.
Os tipos de relacionamentos mais comuns so:
UM para MUITOS Exemplo: um nico cliente pode fazer vrios pedidos, um
nico vendedor pode emitir vrios pedidos, um nico professor pode lecionar
vrias disciplinas.
UM para UM Exemplo: um cliente e atendido por um nico vendedor.
MUITOS para MUITOS Exemplo: vrios alunos podem ser matriculados em
vrios cursos e os vrios cursos podem ter matriculados vrios alunos.
27.3 BD x SGBD
Os softwares usados para criar e gerenciar (armazenar e manupilar) os dados
de uma empresa so conhecidos por SGBD SISTEMA GERENCIADOR DE
BANCO DE DADOS. O SGBD adotado por ns o ACCESS, que faz parte do
pacote comercial OFFICE da empresa MICROSOFT. Embora os exemplos
desta apostila utilizarem a verso 2000, verses anteriores e recentes tambm
podero ser usadas sem problemas, observam as pequenas diferenas nas
telas que ilustram os tpicos. A apostila no faz o estudo especfico sobre o MS
ACCESS, vamos apenas nos limitar a abordar apenas a parte que nos
interessa, que a criao do Banco de Dados. Seu gerenciamento ser feito
em Java e SQL.

27. 4 ndices
Um ndice no uma caracterstica do Modelo Relacional, mas sim uma
estratgia de otimizao de consulta para implementaes desse modelo. Isso
acontece porque o Modelo Relacional um modelo terico, porm quando
transformado em uma implementao as suas operaes (tanto da lgebra
quanto do clculo) 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 ento como catlogos organizados de forma a beneficiar
certo tipo de consulta. possvel imaginar que uma tabela seria associada a
quantidade mxima de ndices, porm isso traria muitos gasto de insero e
alterao. Por isso, em uma implantao de um banco de dados, so
escolhidos os indces mais adequados. Normalmente a chave primria um
ndice.
O limitador imposto exclusivamente pela ferramenta de software utilizada.
Sendo assim, para a recuperao dos dados necessrio a existncia de
mecanismos que facilitem a consulta, proporcionando uma perfomance
aceitvel para a mesma. Para isso, os sistemas de bancos de dados
relacionais criam ndices das tabelas, sendo que esses ndices so atualizados
constantemente.
Caso o ndice se corrompa por algum motivo, possvel que pesquisas
possam retornar resultados no desejados ou que inseres de chaves
duplicadas aconteam. Nesse caso o banco de dados ser corrompido
tambm. Os sistemas de bancos (bases) de dados possuem mecanismos de
evitar que esses eventos ocorram como tambm possibilitam a recuperao
dos ndices e consistncia 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 vrios.
Um indice em rvore (e existem vrios tipos de rvore) ordena os dados e
permite buscas razoavelmente rpidas para elementos especficos e busca
bastante rpidas para intervalos. O ndice em rvore geralmente baseado na
idia da rvore Binria, porm adaptada para atender as caractersticas de
usar Memria de . O tipo mais comum a rvore B.
Um ndice em hash organiza os dados codificando-os e mapeando-os em
posies de array. So uma forma extremamente rpida de encontrar
elementos especficos, mas praticamente inteis para responder um intervalo
de valores.
Um ndice binrio indicado quando o campo indexado tem um pequeno
nmero 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 so: R-Tree, GiST, etc.

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 opo 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 boto Criar (Figura2).

Figura2
Com este procedimento o banco de dados Agenda.mdb, precisa de ao menos
uma tabela para pode armazenar informaes. A tabela pode ser criada com
ACCESS, Java e SQL. No feche o MS ACCESS.

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 criao de tabelas no MS ACCESS.
Confira se na coluna Objetos a opo Tabela est selecionada.

Selecione a opo Criar Tabela No Modo de Estrutura.

Depois de todos os passos anterior ser executado, Clique no boto Novo.

Selecione a opo Modo de Estrutura.

Na tela seguinte crie os campos para a tabela.

Depois de digitar estas informaes, crie a Chave Primria, clique no campo


Nome,
depois clique no cone da Chave Primria,
depois de clicar na chave primria o campo nome receber a
chave,
Aps 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
comunicao SQL uma linguagem de consulta, usada para estabelecer
comunicao 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 propem a aprender SQL, estejam na China, no Brasil ou em
qualquer pas do mundo, recebero o mesmo conjunto de informaes.
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 no s isto.
Um servidor de SQL faz com que a linguagem v muito alm do que a forma
embutida pode oferecer.
28.1 Como usar SQL?
As formas usuais de executar instrues SQL so:
EMBUTIDA SQL pode ser chamada de dentro de uma linguagem
(procedural, visual ou de script).
WIZARDS Rotinas embutidas nos SGBDs que permitem a construo de
complexas instrues SQL, aparentes ou no, at mesmo por quem no
conhece a linguagem.

RAD Geradores de Aplicaes so mecanismos de gerao automtica de


rotinas ou at mesmo a gerao de aplicaes completas independentes do
mecanismo gerador.
IDE Os Ambientes Integrados de Desenvolvimento facilitam o uso do SQL
por permitirem que com o uso de interfaces grficas e wizards, as instrues
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
relao com o tipo de dados SQL:
MS ACCESS

SQL
CHAR
CHAR(n)
VARCHAR
VARCHAR(n)
Sendo n um nmero que identifica o comprimento do campo, ou seja, qual o limite
mximo de caracteres que pode ser armazenado.
Se no for especificado, ser igual a 255.
Memorando
TEXT
Formato MS ACCESS
Formato SQL
BYTE
Byte
SMALLINT
Inteiro
INTEGER
Inteiro Longo
REAL
Nmero
Simples
FLOAT
Duplo
UNIQUEIDENTIFIER
Cdigo de Replicao
DECIMAL ou NUMERIC
DECIMAL(n) ou NUMERIC(n)
Decimal
DECIMAL(n,d) ou NUMERIC(n,d)
Sendo n o nmero mximo de caracteres permitido no campo,
d o nmero de casas decimais.
Data/Hora
DATE, TIME, DATETIME
Moeda
MONEY ou CURRENCY
AutoNumerao
COUNTER
Sim/No
BIT
Texto

Tipos Numricos
Diferena entre cada um dos tipos numricos diz respeito preciso e
limitaes de valores de cada um. A tabela seguinte serve para esclarecer o
assunto:
ACCESS
Byte
Inteiro (Integer)
Inteiro Longo (Long)
Simples (Single)
Duplo (Double)
Decimal

SQL
BYTE
SMALLINT
INTEGER
REAL
FLOAT
DECIMAL

Tamanho de Armazenamento
1 byte
2 bytes
4 bytes
4 bytes (vrgula flutuante de preciso simples)
8 bytes (vrgula flutuante de preciso duplo)
14 bytes

29 ODBC/JDBC
29.1 O que um Driver?
Driver um tipo de software que tem por finalidade permitir a comunicao
entre sistemas. Os drivers geralmente so fornecidos pelos fabricantes, mas
comum encontrar drivers genricos distribudos com o sistema operacional e
tambm drivers de terceiros, gratuitos ou no.
O que se espera de um driver a mxima 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 / Padro 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
tambm 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 recomendvel que voc instale ou atualize o MDAC.
Muitos erros de conexo encontrados, foram corrigidos aps a instalao ou
atualizao deste componente. Voc baixar no www.microsoft.com.br, ou pelo
instalador do ORACLE LITE.
29.3 O que JDBC?
JDBC Java DataBase Connectivity / Padro Java de Conectividade a
Banco de Dados a interface que possibilita s aplicaes Java acessarem
bancos de dados relacionais e demais arquivos de dados. atualmente a
forma mais prtica e rpida para conectar uma aplicao 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 aplicao. Mas onde conseguir a ponte JDBC-ODBC? J
vimos que os drivers ODBC so instalados com o MS ACCESS. E o JDBC?
Voc no precisa se preocupar com a instalao do JDBC e da ponte JDBCODBC. No Java2 essas interfaces fazem parte do pacote e so 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 conexo 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 no precisa saber como ele foi
codificado, mas deve saber como carreg-lo para que ele se registre no
DriverManager.

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 -> Configuraes -> 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 boto Adicionar, conforme mostra a figura1.

Figura1
3. Selecione o Driver para Microsoft Access (*.mdb) e d um clique no boto
Concluir, conforme mostra a figura2.

Figura2
A

4. D um clique no boto Selecionar, conforme mostra a figura3

Figura3
5. Localize na pasta C:\Agenda e o arquivo Agenda.mdb e d um clique no
boto 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 boto OK, conforme mostra a figura5.

Figura5
A

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 boto OK
para fechar a janela do Administrador de Fonte Dados ODBC

Figura6
30 SQL Java & Banco de Dados - Consideraes Iniciais
Este o tpico principal de nossa apostila. aqui que aprenderemos, na
prtica, a fazer conexes com banco de dados usando Java e SQL. Verifique
se voc possui os requisitos necessrios para prosseguir:
Um banco de dados com o nome Agenda.mdb, criado conforme o tpico 27.5.
Uma fonte de dados ODBC com o nome Agenda, criado conforme o tpico
29.6.
30.1 Anatomia de uma Conexo e Testando a Conexo
Vejamos a anatomia de uma classe que implementa uma conexo 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 criao de


janelas, botes, eventos dos botes e o acesso ao banco de dados com o
Java. Os pacotes principais da linguagem so importados default. Pacotes de
uso especfico devem ter esta importao explcita nas linhas de codificao da
classe.

5. public class TestaConexao extends JFrame{


6.JButton botao;
7.public TestaConexao(){
8.
super("Testando a Conexo...");
9.
Container tela = getContentPane();
10.
setLayout(null);
11.
botao = new JButton("Verificar Conexo");
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 mtodo para notificao 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 variveis com a string de conexo, o nome do
usurio e a senha, se houver. Lembre-se que a fonte de dados criada em
operao parte. Se tiver dvidas sobre criao de fontes de dados, leia
novamente o tpico 29.6.
Linha 19 Esta linha carrega o driver que ser usado pela aplicao Java para
realizar a comunicao com o banco de dados.
Linha 20 Cria uma conexo de nome con.
Linha 21 Estabelece a conexo usando os valores das variveis que foram
declaradas inicializadas nas linhas 16, 17 e 18. Nome de usurio e senha so
opcionais. Por estar dentro de uma instruo try, caso ocorra algum problema
na conexo, programa desvia a execuo do cdigo para o bloco catch, que
exibier a mensagem da linha 22. No nem a nica nem a forma mais
profissional de tratar excees, mas a mais simples e funcional para quem
est dando os primeiros passos em Java.
Linha 22 Exibe uma mensagem dizendo que a conexo foi estabelecida com
sucesso.
Linha 23 Fecha a conexo aberta nas linhas 19 e 20.
15.
16.
17.
18.
19.
20.
21.
22.

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,"Conexo
estabelecida","Mensagem do
Programa",JOptionPane.INFORMATION_MESSAGE);
con.close();
}

23.
24.

Linha 25 Captura os erros ocorridos durante a execuo 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 conexo com o banco de
dados no for estabelecida.
25.
26.
27.

catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no
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


boto verificar para ver se a conexo
foi estabelecida.

Conexo OK

Conexo com erro

30.2 - Criando a Tabela CREATE TABLE


Podemos criar uma tabela de nome Tabela1 com os campos Campo1
(AutoNumerao), Campo2 (Texto), Campo3 (Memorando), Campo4
(Data/Hora) e Campo5 (Sim/No). 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 maisculos.
Usando como referncia a tabela de TIPOS DE DADOS, voc pode criar
tabelas com praticamente qualquer um dos tipos disponveis no MS ACCESS.
A

E no s isto, alm do nome do campo e do tipo de dados, voc pode incluir


as seguintes chaves:
NULL No rquerido. O campo no precisa conter dados. Se nada for
especificado, NULL ser usado como padro default.
NOT NULL Requerido. um campo cuja entrada de dados obrigatria.
Vamos criar a Tabela2 usando as seguintes informaes:
CREATE TABLE Tabela2 (ID COUNTER, Nome VARCHAR(50) NOT NULL,
Tel1 VARCHAR(20) NOT NULL,Tel2 VARCHAR(20) NULL)
Neste exemplo, a digitao do Nome e do Tel1 obrigatrio. S o segundo
telefone, Tel2, opcional.
Vamos criar a Tabela3 usando o PRIMARY KEY, (campo chave), que tambm
pode ser criado na instruo 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 no
podem se repetir. Exemplos de campos que no podem se repetir: nome,
nmero de cdigo, matrcula, login e etc. Com a palavra chave UNIQUE,
definimos os campos os campos que no 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 boto Executar Instruo 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
No muito comum a remoo de uma tabela. Veja o comando:
DROP TABLE Tabela1

Programa ManipulacaoDeTabelas em execuo

Digite a instruo SQL na caixa de texto e clique no boto para executar as


instrues 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
opo Tabelas esta selecionada e veja se todas que voc criou esta nesta
opo.
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,"Conexo no estabelecida \n
Comandos Invlidos","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)

Lao If no aplicativo Incluir2.java:


Quando o usurio utiliza campos Sim/No, o banco de dados trata esses
valores como 1 para sim, 0 para no, para facilitar o usurio, o lao If resgata o
contedo que o usurio digitar na caixa de texto Deficincia, pode ser digitado
s ou S, n ou N. Se o usurio digitar s ou S, o lao If armazena na varivel result
o valor 1, caso o usurio digite n ou N, o lao If armazena na varivel result o
valor 0. O contedo da varivel result ser utilizada na instruo 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 instruo
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 Nmero ou Bit (Sim/No), no precisa de aspas.
Datas e Horas entre o smbolo do sustenido (#), tambm 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 vrgula,
agora se voc for usar vrgula, insira o valor entre aspas simples.
Note que temos na tabela Tabela1 um campo Cdigo do Tipo AutoNumerao,
cujo os valores so gerados automaticamente pelo MS ACCESS.
Lembretes:
1. No inseri dados em campos do tipo COUNTER (AutoNumerao).
2. Ateno com os campos que possuem a chave NOT NULL, pois a insero
de dados obrigatria.
3. Tambm ser retornado erro caso voc defina um campo como PRIMARY
KEY ou UNIQUE e tente entrar com dados repetidos nestes campos.
Excute tambm o aplicativo Incluir.java.
30.6 Consultas (SELECT)
Agora que possumos tabelas com dados, podemos usar a instruo SELECT
e clusula WHERE (onde) para consultas a essas tabelas. Clusula WHERE
perimte que faamos consultas (SELECT), alteraes (UPDATE) e excluses
(DELETE) com o uso de condies para que a ao seja executada.
Aplicativo Consultar.java, veja a instruo SQL, vai listar listar todos os
registro da tabela Tabela1
SELECT * FROM Tabela1

Aplicativo Consultar2.java, veja a instruo 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 Avanadas


O uso do NOT- Se usarmos NOT aps a clusula WHERE, vamos inverter a
funo do operador. Veja o exemplo s retorna a verdadeiro se o campo Cd
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 manipulao 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 Joo no incio do campo:
WHERE Nome LIKE %Joo
Retorna todos os registros que possuam a string Joo no final do campo:
WHERE Nome LIKE Joo%
Uso de Operadores Lgicos Podemos usar operadores lgicos AND (E),
OR (OU) para melhorar ainda mais nossas operaes de banco de dados.
Exemplo Consultar5.java, listar todos os registros que o salrio menor ou
igual a 500 e a data de nascimento menor que 01/01/1978, vai listar todos que
so 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 salrio seja menor que 500.
SELECT * FROM Tabela1 WHERE Nome LIKE '%Silva%' OR sal < 500

A Funo IsNull Retorna os campos que no possuem dados. Lista todos os


campos que esto em branco. Exemplo uma lista de alunos, que nem todos os
alunos possuem telefone. Essa instruo 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, ns podemos fazer uso
de uma consulta individual. Onde voc digita o Cdigo e clicando no boto
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("Incluso de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Cdigo: ");
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("Salrio: "); t5 = new JTextField(15);
l6 = new JLabel("Deficincia: "); 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 = "";

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 = "No";
t6.setText(result);
st.close();
con.close();
}
catch(Exception event) {
JOptionPane.showMessageDialog(null,"Conexo no
estabelecida \nPessoa no 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 cdigo do boto Consultar Registro:


Cria os objetos que permitem a realizao de consultas SQL. Statement
permite a execuo das instrues 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 mtodo 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 Cdigo, chamando o mtodo
executeQuery de Statement:
ResultSet rs = st.executeQuery("SELECT * FROM Tabela1 WHERE
Cod="+t1.getText());
A

Posiciona no primeiro Registro:


rs.next();
Exibe dentro das caixas de texto, as informaes sobre o cdigo 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
varivel inteira num, declarada no incio do aplicativo:
num=Integer.parseInt(rs.getString("Def"));
Utiliza o lao IF para condio, que verifica se o valor da varivel num, for igual
a 1, a sentena verdadeira, logo o contedo a ser exibido na caixa de texto
ser Sim, caso contrrio se o valor for igual a 0, logo a sentena ser falsa e o
contedo a ser exibido na caixa de texto, ser No.
if (num==1)
result = "Sim";
else if (num==0)
result = "No";
t6.setText(result);
Caso o usurio entre com o cdigo invlido, o aplicativo exibir uma mensagem
de texto, informando ao usurio a invlidade.
Aplicativo Consultar8.java em execuo.

Mensagem de erro quando o cdigo invlido 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 no for especificado a classificao da nossa ordenao, ela ser ASC
(ascendente) por default. Para a ordenao decrescente, usamos DESC. Mais
de uma classificao pode ser utilizada bastar utilizar vrgulas.
SELECT * FROM Cadastro ORDER BY Nome, Telefone_1 ASC
30.8 Atualizando Dados (UPDATE)
A instruo UPDATE, serve para realizar atualizaes nos registro da tabela.
Sintaxe:
UPDATE NomeDaTabela SET Campo=NovoValor WHERE
Campo=ValorAntigo
Atualizao de registro pelo cdigo, na Tabela2, foi selecionado o cdigo 1
para realizar as alteraes veja:
UPDATE Tabela2 SET Nome='Pedro Carlos da Silva, Idade=29,Dn=#23-051978#,Sal=380.00,Def=0 WHERE Cod=1
No campo Sal, se voc for adicionar o valor com vrgula coloque o valor entre
aspas simples ex: 380,00
No campo Def, onde os valores retornados para a tabela sim ou no, 1
corresponde a Sim, 0 corresponde a no.
No campo Dn, onde os valores a serem includos so datas deve ser usar #2305-2004#.
String utilizam aspas simples, e nmeros no utilizam aspas simples.
S que nesse aplicativo foi feito um lao IF, para dizer que quando for digitando
s ou S, a varivel result recebe o valor 1, e exibe na caixa de texto o contedo
sim. Caso for digitado n ou N, a varivel result recebe o valor 0, e exibe na
caixa de texto o contedo no.
A

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("No");}
E na isntruo SQL foi colocado a varivel result, que contm 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 salrios para o valor que o
usurio 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
instruo 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 Cdigo, aplicativo Excluir2.java:
DELETE FROM Tabela2 WHERE Cod= t1.getText()
Excluindo com operadores lgicos:
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 prpria 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;

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,"Conexo no
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));

break;
case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
}
Aplicativo Relatorio.java em execuo

A primeira vista o cdigo do aplicativo Relatorio.java pode parecer um pouco


complicado, mas tenho certeza de que aps a anlise, voc perceber que
s uma questo de tempo at estar totalmente familiarizado com os novos
objetos usados no exemplo:
1. Declara tabela como instncia do objeto JTable: private JTable tabela;
2. Classe pblica Relatrio a responsvel pela criao da conexo 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,"Conexo no
estabelecida","Mensagem do Programa",
JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(600,200);
setVisible(true);
}

3. O mtodo buscaTabela o responsvel por criar a tabela que ser inserida


na janela:
buscaTabela();
4. Cria os objetos que permitem a realizao de consultas SQL, Statement
permite a execuo das instrues 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 iro compor nossa tabela:
Vector cabecalho = new Vector();
Vector linhas = new Vector();
6. Invoca o mtodo 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 alfabtica chamando o mtodo executeQuery
de Statement:
res = st.executeQuery("SELECT * FROM Cadastro ORDER BY Nome");
8. Posiciona no primeiro registro:
res.next();
9. Armazenaa informaes sobre o banco de dados e a consulta, que podero
ser usadas pela conexo ou pelo desenvolvedor:
ResultSetMetaData rsmd = res.getMetaData();
10. Inicia um loop. O objeto das linhas seguintes montar a tabela com seus
cabealhos:
Utiliza o mtodo rsmd.getColumnCount(), que informa quantos registros
compem a tabela, e monta o cabealho, adicionando os ttulos (Nome, Idade,
Sexo e etc) a cada coluna do cabealho:
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));

Adiciona as linhas e o cabealho a tabela, cria barras de rolagem se


necessrio, adiciona as barras de rolagem a janela, com o painel centralizado e
usa o mtodo 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 informaes 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 switchcase verifica o tipo de dados e utilize a forma
mais apropriada para obt-los (getString() para textos, getDate() para
data/hora, getLong() para nmeros):
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 relatrio com filtro e chamando outra janela
No aplicativo Relatorio1.java, temos uma janela que exibe um rtulo, uma
caixa de texto e um boto, quando o usurio digita um nome, e clica no boto
Exibir Relatrio, o aplicativo retorna uma outra janela exibindo os nomes.
Caso o usurio no digite nenhum nome, e clique no boto Exibir Relatrio, o
aplicativo exibe todos os nomes da tabela. Veja o aplicativo:
Primeira janela do aplicativo Relatorio1.java

Verificar quais Tipos de Dados podem ser utilizados para exibir a sada de
dados da tabela.
Tipos de Dados
String (Caractere)
Integer (Inteiro)
DATETIME(Data e Hora)
Nmeros Flutuantes
BIT (Lgico)
Double (8 bytes)
Real (4 bytes)
FLOAT(Double)

Verificar
Types.VARCHAR
Types.INTEGER
TIMESTAMP
Types.NUMERIC
Types.BIT
Types.DOUBLE
Types.REAL
Types.FLOAT

Sada
rs.getString
new Long(rs.getLong)
rs.getDate
rs.getDouble
rs.getByte
Long(rs.getLong)
Long(rs.getLong)
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 clusula WHERE, para verificar se o nome da pessoa nas duas tabelas
so iguais, e exibe os dados destas pessoas na janela.
Veja a instruao 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 sero utilizadas:
FROM Cadastro, Tabela1
3 Passo: Utiliza a clusula WHERE para comparar os nomes nas tabelas:
WHERE Cadastro.Nome=Tabela1.Nome
Tela do aplicativo Relatorio2.java em execuo

Aplicativos resolvidos em Ordem Alfabtica:


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("Alterao de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Cdigo: ");
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("Salrio: "); t5 = new JTextField(15);
l6 = new JLabel("Deficincia: "); 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 = "No";
t6.setText(result);

st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no estabelecida \nPessoa
no 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("No");}
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,"Conexo no estabelecida \nPessoa
no 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(){

super("Alterao de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Entre com o valor do novo salrio: ");
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,"Conexo no estabelecida \nPessoa
no 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;

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,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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("
");
}

st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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,"Conexo no estabelecida \n
Comandos Digitados Invlidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
setSize(450, 350);
}
public static void main(String args[]){
Consultar3 app = new Consultar3();

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,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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(){

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,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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();

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,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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")+" ");

System.out.println("
System.out.println("
System.out.println("

");
");
");

}
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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("Cdigo: ");
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("Salrio: "); t5 = new JTextField(15);
l6 = new JLabel("Deficincia: "); 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 = "";

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 = "No";
t6.setText(result);
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no estabelecida \nPessoa
no 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));

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","Tera - Feira","Quarta - Feira",
"Quinta - Feira","Sexta - Feira","Sbado"};
String meses[]={"Janeiro","Fevereiro","Maro","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[]){

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("Rtulo 1");
rotulo2 = new JLabel("Rtulo 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("Excluso de Registro");
Container tela = getContentPane();

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,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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("Excluso de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Cdigo: ");
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("Salrio: "); t5 = new JTextField(15);
l6 = new JLabel("Deficincia: "); 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("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 = "No";
t6.setText(result);
st.close();
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no estabelecida \nPessoa
no 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();
}

catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no estabelecida \nPessoa
no 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);

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 ("Prximo >>");
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 ("Prximo >>");
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);

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 ("Prximo >>");
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 ("Prximo >>");
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.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 ("Prximo >>");
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(){

super("Exemplo com JButton");


Container tela = getContentPane();
setLayout(null);
botao1 = new JButton ("Procurar");
botao2 = new JButton ("Voltar >>");
botao3 = new JButton ("Prximo >>");
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 Botes com Dica");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,50,100,20);
botao.setToolTipText("Exemplo de Botes com Dilogos de confirmao");
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);
}
}

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;

public ExemploBotoesDicas(){
super("Exemplo de Botes 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("Boto usado para abrir algo");
botao2.setToolTipText("Boto 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 Botes 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("Boto usado para abrir algo");
botao2.setToolTipText("Boto 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"};

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 Itlico");
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;

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);

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("Opes");
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("Opes");

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("Opes");
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("Itlico");
negritoitalico = new JCheckBoxMenuItem("Negrito e Itlico");
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", "Itlico", "Negrito e Itlico"};

public ExemploDeMenu4(){
super("Exemplo de Menus com JRadioButtonMenuItem");
Container tela = getContentPane();
tela.setLayout(null);
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opes");
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);
}

}
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", "Itlico", "Negrito e Itlico"};
JTextArea texto;
JPanel painel;
JScrollPane rolagem;
int estilofonte, tamfonte;
public ExemploDeMenu5(){
super("Exemplo de Menus executando aes");
Container tela = getContentPane();
tela.setLayout(null);
estilofonte=Font.PLAIN;
tamfonte=12;
barra = new JMenuBar();
setJMenuBar(barra);
opcoes = new JMenu("Opes");
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);

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);

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("Informao");
exclamacao = new JButton("Exclamao");
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
informao","Mensagem de Informao",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
exclamao","Mensagem de Exclamao",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);

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("Boto 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","No"};
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[]){

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)

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 = "";

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);

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","So Paulo","Minas Gerais","Esprito 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","So Paulo","Minas Gerais","Esprito 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);
}
}
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,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","So Paulo","Minas Gerais","Esprito 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);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJList2 extends JFrame{
JList lista;
String cidades[] = {"Rio de Janeiro","So Paulo","Minas Gerais","Esprito 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);

}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ExemploJList3 extends JFrame{
JList lista;
String cidades[] = {"Rio de Janeiro","So Paulo","Minas Gerais","Esprito 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);

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 ("Endereo");
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 ("Endereo");
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();

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 ("Endereo");
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 ("Endereo");
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);

}
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");

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);

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);

}
}
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 sadas minsculas");
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;

public ExemploMaiusculas(){
super("Exemplo de sadas maisculas");
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("So 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);
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();

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 Botes");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Sair");
botao.setBounds(100,90,100,20);
botao.setToolTipText("Boto que finaliza a janela");
tela.add(botao);
botao.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
int opcao;
Object[] botoes = {"Sim","No"};

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){

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("Incluso 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("");

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,"Conexo no
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("Incluso de Registro");
Container tela = getContentPane();
tela.setLayout(null);
l1 = new JLabel("Cdigo: ");
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("Salrio: "); t5 = new JTextField(15);
l6 = new JLabel("Deficincia: "); t6 = new JTextField(5);
l1.setBounds(20,30,80,20); t1.setBounds(100,30,150,20);
t1.setText("AutoNumerao 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 {

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,"Conexo no estabelecida \n
Comandos Digitados Invlidos","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();

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 Nmero: "); rotulo2 = new JLabel("2 Nmero: ");
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.*;

public class ManipulacaoDeTabelas extends JFrame{


JButton botao,botao1;
JTextField texto;
JLabel rotulo;
public ManipulacaoDeTabelas(){
super("Manipulao de Tabelas");
Container tela = getContentPane();
tela.setLayout(null);
rotulo = new JLabel("Entre com sua instruo: ");
texto = new JTextField(255);
botao = new JButton ("Executar Instruo 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,"Conexo no estabelecida \n
Comandos Invlidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE);
}
}
}
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 sada",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");

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 sada",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[]){

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 sada",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("Rtulo 1");
rotulo2 = new JLabel("Rtulo 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);
}
}
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,"Conexo no 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));
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 Relatrio"); 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);
}});

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,"Conexo no 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();

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,"Conexo no 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");

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);

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 Nmero: "); rotulo2 = new JLabel("2 Nmero: ");
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[]){

Soma app = new Soma();


app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
import javax.swing.*;
public class TamanhoFixo extends JFrame{
public TamanhoFixo(){
super("Uma janela no dimensionvel");
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 Conexo...");
Container tela = getContentPane();
tela.setLayout(null);
botao = new JButton("Verificar Conexo");
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,"Conexo estabelecida","Mensagem do
Programa",JOptionPane.INFORMATION_MESSAGE);
con.close();
}
catch(Exception event)
{
JOptionPane.showMessageDialog(null,"Conexo no
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);
}
}

Você também pode gostar