Apostila Java

Embed Size (px)

Citation preview

Apostila de Java 2 Com Banco de Dados 1 Introduo 1.1 Java: O que Java? 1.2 Java: Como surgiu? 1.3 Java: Funcionamento 2 O que preciso para programar em Java? 2.1 Baixando o WinZip 2.2 Baixando o JDK/SDK 2.3 Baixando a documentao do JDK/SDK 2.4 Baixando o JCreator 2.5 Configurando o JCreator 2.6 Testando o funcionamento do JDK/SDK e do JCreator 3 Conceitos fundamentais de Programao em Java 3.1 Como programa em Java 3.2 Anatomia de uma Classe 3.3 Comentrios 3.4 O uso do ponto-e-vrgula 3.5 Tipos de dados 3.6 Converso de tipo 3.7 Operadores 3.8 Variveis 3.9 Funes matemticas 4 Introduo a interface grficas em Java 4.1 Entendo o Swing 4.11 Uso do JFrame na construo de janelas no aplicativo 4.12 - Janela normal 4.2 - Janela Maximizada 4.3 - Janela minimizada 4.4 Janela que no pode ser redimensionada 4.5 Janela Centralizada 4.6 Trocando a cor do fundo da janela 4.7 Usando cores personalizadas para suas janelas 4.8 Definindo um cone para a janela do aplicativo 5 Adicionando componentes JLabel ou rtulos na sua janela 5.1 - Criar os objetos JLabel 5.2 - Atribuir o contedo ao JLabel 5.3 - Definir Coluna, Linha, largura e altura do JLabel 5.4 - Alterando a cor do JLabel 5.5 - Cores personalizada para o JLabel 5.6 - Alterando tipo da fonte, estilo e tamanho 5.7 Adicionando imagem ao componente JLabel 6 Adicionando componentes JTextField ou caixa de texto 6.1 Foco para uma caixa de texto 6.2 Cor da fonte para a caixa de texto 6.3 Trocando a fonte, estilo e tamanho da letra do JTextField

1

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

2

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

3

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

4

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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.

5

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

6

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

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.

7

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

8

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

9

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

o

z

o

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.

s

o

d

a

D

e

Tela inicial do JCreatord 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); } }

0

1

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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.

1

1

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

Fim2

1

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

1

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

1

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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)

5

1

a

n

i

g

P

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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 Maior que A>B = B Operadores Bitwise Operador Nome ~ Inverso & E (and) | OU (OR) ^ XOU (XOR) > 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; NomeExemplo de uso ~A A&B A|B A ^B A > B A=B61anigP.......................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 zA o d r a C . R a r d n a s k e l A3.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:FunoMath.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)SignificadoRetorna 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 aleatrios4 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 Frame7LabelCheckBox1anigP.......................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 zA o d r a C . R a r d n a s k e l AEsta 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 ALabe lCheckBoxJFrame81anigP.......................s . . .o . .d . . .a . . .D . . .e . . .d . . .o . .c . . .n .aBmoC2avaJedalitsopAConsideraes 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 normalimport 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); }91anigP.......................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 zA 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 Constante02anigP.......................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 zA o d r a C . R a r d n a s k e l A4.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); } }12anigP.......................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 zA o d r a C . R a r d n a s k e l A4.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); } }22anigP.......................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 zA o d r a C . R a r d n a s k e l ATemos 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));32anigP.......................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 zA o d r a C . R a r d n a s k e l A4.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 2anigP.......................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 zA o d r a C . R a r d n a s k e l A5 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:52anigP.......................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 zA o d r a C . R a r d n a s k e l APara 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 - comprimentoLinha 20 Linha 60 Linha 100 Linha 140Comprimento 80Altura 20Coluna 506 2anigP.......................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 zA o d r a C . R a r d n a s k e l A5.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 RomanJ 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);72anigP.......................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 zA o d r a C . R a r d n a s k e l A5.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); } }82anigP.......................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 zA o d r a C . R a r d n a s k e l A6 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 2anigP.......................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 zA o d r a C . R a r d n a s k e l ADeclarar 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);03anigP.......................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 zA o d r a C . R a r d n a s k e l A7 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); } }13anigP.......................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 zA o d r a C . R a r d n a s k e l AAnalisando 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 botes23anigP.......................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 zA o d r a C . R a r d n a s k e l A7.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); } }33anigP.......................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 zA o d r a C . R a r d n a s k e l A7.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);43anigP.......................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 zA o d r a C . R a r d n a s k e l A7.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:53anigP.......................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 zA o d r a C . R a r d n a s k e l A8 - 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));63anigP.......................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 zA o d r a C . R a r d n a s k e l A8.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 minsculos73anigP.......................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 zA o d r a C . R a r d n a s k e l AObtida 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);83anigP.......................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 zA o d r a C . R a r d n a s k e l Atela.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){}93anigP.......................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 zA o d r a C . R a r d n a s k e l AObserve 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:04anigP.......................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 zA o d r a C . R a r d n a s k e l A10 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 eventos14anigP.......................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 zA o d r a C . R a r d n a s k e l AComo 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);24anigP.......................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 zA o d r a C . R a r d n a s k e l Arotulo = 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.34anigP.......................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 zA o d r a C . R a r d n a s k e l A10.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);44anigP.......................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 zA o d r a C . R a r d n a s k e l AsetVisible(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 4anigP.......................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 zA o d r a C . R a r d n a s k e l A10.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.64anigP.......................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 zA o d r a C . R a r d n a s k e l A10.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); } }74anigP.......................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 zA o d r a C . R a r d n a s k e l A10.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); } }84anigP.......................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 zA o d r a C . R a r d n a s k e l A11 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.94anigP.......................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 zA o d r a C . R a r d n a s k e l AO 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.05anigP.......................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 zA o d r a C . R a r d n a s k e l A11.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