Você está na página 1de 208

Apostila de Java 2 Com Banco de Dados 1 Introduo 1.1 Java: O que Java? 1.2 Java: Como surgiu? 1.

? 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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

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. Interpretador Java (runtime Java ou JVM Java Virtual Machine/Mquina Virtual Java) JVM para WIN32

Cdigo Fonte Arquivo.java

Compilador Java

Binrio Java Arquivo.class

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

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

JVM para SOLARIS

JVM para Linux

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . .

a . . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o o

p z o

A d r a C . R a r d n a s k e l A

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

Tela inicial do JCreator


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

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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
2

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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 */
3

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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

Caractere:
Tipo char Tamanho 2 bytes

Booleano:
Tipo boolean Tamanho 1 byte

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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 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 Faa isto int novovalor = Integer.parseInt(valor) float novovalor = Integer.parseInt(valor) Int novovalor = Integer.parseInt(valor)

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

Significado
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 List Button Containe r Window Frame
7

Label

CheckBox

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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 List Button Containe r Window Frame
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o z o d r a C . R a r d n a s k e l A

Labe l

CheckBox

JFrame
8

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n .

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

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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:

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.

Valor da Constante

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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());
4 2

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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:

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

Linha 20 Linha 60 Linha 100 Linha 140

Comprimento 80

Altura 20

Coluna 50
6 2

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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);

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.
9 2

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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);

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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:

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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:

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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();
5 4

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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 SINGLE_INTERVAL_SELECTION MULTIPLE_INTERVAL_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.

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

List

Button

Container Window

Label

CheckBox

J Component Frame JComboBox


3 5

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

} );

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

showInputDialog showMessageDialog

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.

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

A tabela seguinte relaciona essas constantes e descreve seus uso:


Constante HORIZONTAL_SCROLL_AS_NEEDED HORIZONTAL_SCROLL_NEVER HORIZONTAL_SCROLL_ALWAYS VERTICAL_SCROLL_AS_NEEDED VERTICAL _SCROLL_NEVER VERTICAL_SCROLL_ALWAYS 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.

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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]);
5 9

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l 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:

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . .

p o z

A o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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);
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o z o d r a C . R a r d n a s k e l 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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

1 - Nome do Banco de Dados

2 - Nome da Tabela

3 - Nome e tipo de dados das COLUNAS

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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 Nmero do Cliente Nome do Cliente Endereo Telefone Tabela Pedidos Nmero do Pedido Nmero do Cliente Descrio do Pedido 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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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:
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 MS ACCESS

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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
4 2

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l 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
5 2

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l 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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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 30.2 - Criando a Tabela CREATE TABLE

Conexo com erro

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.
8 2

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l 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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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)

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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());
4 3

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l 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.

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.
6 3

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l 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;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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)

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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('_');

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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 {

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.*;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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.*;

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

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

s . . .

o . .

d . . .

a . . .

D . . .

e . . .

d . . .

o . .

c . . .

n . .

a . . .

B . . . . .

m . .

o . . .

C . . .

2 . . .

a . .

v . .

a . .

J . . .

e . .

d . . . .

a .

l .

i . .

t .

s . . .

o . . .

p . o

A z o d r a C . R a r d n a s k e l A

Você também pode gostar