Baixe o app para aproveitar ainda mais
Prévia do material em texto
A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 Apostila de Java 2 Com Banco de Dados 1 – Introdução 1.1 – Java: O que é Java? 1.2 – Java: Como surgiu? 1.3 – Java: Funcionamento 2 – O que é preciso para programar em Java? 2.1 – Baixando o WinZip 2.2 – Baixando o JDK/SDK 2.3 – Baixando a documentação do JDK/SDK 2.4 – Baixando o JCreator 2.5 – Configurando o JCreator 2.6 – Testando o funcionamento do JDK/SDK e do JCreator 3 – Conceitos fundamentais de Programação em Java 3.1 – Como programa em Java 3.2 – Anatomia de uma Classe 3.3 – Comentários 3.4 – O uso do ponto-e-vírgula 3.5 – Tipos de dados 3.6 – Conversão de tipo 3.7 – Operadores 3.8 – Variáveis 3.9 – Funções matemáticas 4 – Introdução a interface gráficas em Java 4.1 – Entendo o Swing 4.11 – Uso do JFrame na construção de janelas no aplicativo 4.12 - Janela normal 4.2 - Janela Maximizada 4.3 - Janela minimizada 4.4 – Janela que não pode ser redimensionada 4.5 – Janela Centralizada 4.6 – Trocando a cor do fundo da janela 4.7 – Usando cores personalizadas para suas janelas 4.8 – Definindo um ícone para a janela do aplicativo 5 – Adicionando componentes JLabel ou rótulos na sua janela 5.1 - Criar os objetos JLabel 5.2 - Atribuir o conteúdo ao JLabel 5.3 - Definir Coluna, Linha, largura e altura do JLabel 5.4 - Alterando a cor do JLabel 5.5 - Cores personalizada para o JLabel 5.6 - Alterando tipo da fonte, estilo e tamanho 5.7 – Adicionando imagem ao componente JLabel 6 – Adicionando componentes JTextField ou caixa de texto 6.1 – Foco para uma caixa de texto 6.2 – Cor da fonte para a caixa de texto 6.3 – Trocando a fonte, estilo e tamanho da letra do JTextField A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 6.4 – Alinhamento do texto de uma caixa de texto 6.5 – Alteração da cor de fundo da caixa de texto 7 – Adicionando componentes JButton ou botões a sua janela 7.1 – Botão somente com texto 7.2 – Botão com texto e imagem 7.3 – Botão somente com imagem 7.4 – Adicionando vários botões na janela 7.5 – Definir a cor de fundo para um componente JButton 7.6 – Definir teclas de atalho para objetos JButton 7.7 – Qual botão reagirá ao pressionamento da tecla enter 8 - Adicionando componentes JPasswordField 8.1 – Alterando a cor de fonte de um JPasswordField 8.2 – Definir uma cor personalizada para o componente JPasswordField 8.3 – Alterando a cor de fundo de um componente JPasswordField 8.4 – Cor de fundo personalizada para o componente JPasswordField 8.5 – Alterar tipo de fonte, estilo e tamanho da letra do componente 8.6 – Alterando o caracter que aparece no componente JPasswordField 9 – Controle JFormattedTextField para data, telefone, CEP, CPF 9.1 – Adicionando cores na letra do JFormattedTextField 9.2 – Adicionando cores no fundo do JFormattedTextField 9.3 – Alterando o tipo, estilo, tamanho da fonte do JFormattedTextField 10 – Fazendo um JButton executar uma ação 10.1 – Clicando no botão para fechar uma janela 10.2 – Clicando no mostrar para descobrir a senha digitada 10.3 – Clicando no botão somar e será mostrada a soma dos números 10.4 – Clicando no botão limpar e as caixas de texto serão limpas 10.5 – Ocultar e Exibir componentes 10.6 – Desabilitar e Habilitar Exibir componentes 11 – Apresentando a classe JList 11.1 – Selecionando múltiplos itens em uma caixa de listagem 11.2 – Trocando a cor da letra do JList 11.3 – Trocando a cor de fundo do JList 11.4 – Trocando tipo, estilo e tamanho da fonte do JList 12 – uso da classe JComboBox na criação de caixas de combinação 12.1 – Como criar uma caixa de combinação editável 13. Entendimento e uso da classe JCheckBox 13.1 – Iniciar um formulário com uma caixa de seleção marcada. 13.2 – Alterando a cor da letra de um JCheckBox 14 – Uso da Classe JRadioButton para criar botões de opção 15 – Fazendo um aplicativo com ComboBox CheckBox RadioButton A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 16 – Como adicionar dica aos seus botões 16.1 – Adicionar cores diferentes as dicas 17 – Tipos de diálogos fornecidos pela classe JOptionPane 17.1 – Como entender os diálogos de confirmação 17.2 – Traduzir os botões de diálogos 17.3 – Como obter dados por meio de diálogos do tipo prompt 17.4 – Como fornecer os valores a serem selecionados em um diálogo 17.5 – Entendimento e uso do método showMessageDialog. 18 – Maiúsculas e Minúsculas 19 – Adicionando Data nos seus aplicativos 20 – Adicionando Horas ao seu aplicativo 21 – Entendimento da classe JTextArea 21 – Entendimento da classe JTextArea 21.1 – Definição das barras de rolagem para os controles JTextArea 21.2 – Controlando a quebra automática de linhas 21.3 – Cor da fonte, Cor de fundo 21.4 – Tipo, estilo e tamanho de fonte 22 – Adicionando menus a um aplicativo Java 22.1 – Como adicionar submenus a um item do menu 22.2 – Como usar caixa de seleção como itens do menu JCheckBoxMenuItem 22.3 – Usando botões de seleção como item do menu JRadioButtonMenuItem 22.4 – Menu executando ações 23 – Criando um menu de contexto – Classe JPopupMenu 24 – Uso da classe JToolBar para criar barra de ferramentas 25 – Como criar janelas secundárias com o uso da classe JDialog 25.1 – Como criar janelas secundárias modais 25.2 – Como criar janelas secundárias não-modais 25.3 – Como criar janelas secundárias com JFrame 26 – Uso da Classe JWindow para criar uma Splash Screen 27 – Banco de Dados Relacionais 27.1 – O que é um Banco de Dados? 27.2 – Banco de Dados Relacionais 27.3 – BD x SGBD 27. 4 – Índice 27.5 – Criando Banco de Dados 27.6 – Criando Tabelas no MS ACCESS A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 28 – O que SQL? 28.1 – Como usar SQL? 28.2 – Tipos de Dados 29 – ODBC/JDBC 29.1 – O que é um Driver? 29.2 – O que é ODBC? 29.3 – O que é JDBC? 29.4 – JDBC / ODBC 29.5 – DriverManager 29.6 – Como Criar Fontes de Dados ODBC 30 – SQL – Java & Banco de Dados - Considerações Iniciais 30.1 – Anatomia de uma Conexão e Testando a Conexão 30.2 - Criando a Tabela – CREATE TABLE 30.3 – Alterando Tabelas (Incluir ou Excluir Campos) ALTER TABLE 30.4 – Excluir Tabelas – DROP TABLE 30.5 – Inserindo Dados na Tabela (INSERT) 30.6 – Consultas (SELECT) 30.7 – Consultas Avançadas 30.8 – Atualizando Dados (UPDATE) 30.9 – Excluindo Dados (DELETE) 30.10 – Exibindo Dados em uma Lista 30.11 – Exibindo relatório com filtro e chamando outra janela A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 5 1 – Introdução 1.1 – Java: O que é? O que faz ser tão especial a ponto de atrair a atenção da imprensa e programadores de todo mundo? É o fato de ter sido projetada levandoem conta o que havia de melhor e pior nos cinqüenta anos de existências das linguagens de programação. Java parte do que deu ou não certo nas linguagens que a precederam ou lhe foram contemporâneas. E suas características fazem-na uma linguagem muito útil nestes tempos de interconectividade e migração tecnológica constantes. Java é totalmente orientada a objetos é sua parente mais próxima é a linguagem C, C++. Programadores em C sentir-se-ão muito à vontade ao programarem em Java. 1.2 – Java: Como surgiu? Java é ao mesmo tempo uma linguagem e um ambiente de programação. Criada pela Sun Microsystems, foi inicialmente destinada a pequenos dispositivos eletrônicos e quase fracassou. Comercialmente só se tornou um quando se voltou para a internet. Isto porque, graças a sua característica multiplataforma, possibilitou a inclusão de pequenas aplicações diretamente nas páginas web, independente do sistema usado no computador do cliente. A origem do nome Java por si só é material para um livro inteiro. Existem muita especulação e lenda associada aos motivos que levaram os criadores da linguagem Java – inicialmente chamada OAK, a batizaram-na como este nome e a associaram ao café. O mais importante é você saber que inicialmente a linguagem Java não incluía a internet em suas pretensões. Hoje tem se mostrado a linguagem ideal para desenvolvimento para internet e computação distribuída. Também está voltada às origens, ao ser cogitada pelas grandes indústrias como linguagem de programação para eletroeletrônicos e eletrodomésticos. O principal responsável pelo desenvolvimento da linguagem Java foi o engenheiro James Gosling que, a serviço Sun, comandou e orientou o grupo de trabalho responsável pelo desenvolvimento do ambiente de programação Java. O início do desenvolvimento da linguagem Java data de 1992, mas só em 1995, Java foi apresentada ao mundo como linguagem e ambiente de desenvolvimento multiplataforma. Atualmente o ambiente Java se apresenta de diversas formas, cabendo ao programador escolher a que mais o atrai. A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 6 1.3 – Java: Funcionamento Java é uma linguagem de programação totalmente orientada a objetos. Seu funcionamento, no que diz respeito ao desenvolvimento, é semelhante a outras linguagens: DIGITAR, COMPILAR, EXECUTAR, DEPURAR. Mas como já vimos, é uma das poucas, senão a única linguagem de programação que permite ao programador criar um único código que roda sem alteração em qualquer computador que possua uma Java Virtual Machine instalada. É justamente a JVM ou Máquina Virtual Java o segredo por trás da característica de multiplataforma, apresentada pelo ambiente de desenvolvimento Java. O diagrama seguinte ilustra o assunto. A independência de plataforma é a capacidade de o mesmo programa ser executado em diferentes plataformas e sistemas operacionais. Esta é uma das vantagens mais significativas da linguagem Java. Código Fonte Arquivo.java Compilador Java Binário Java Arquivo.class Interpretador Java (runtime Java ou JVM – Java Virtual Machine/Máquina Virtual Java) O código fonte é um arquivo digitado em qualquer editor de texto puro e salvo com extensão .Java Compilador Javac O compilador Java gera um arquivo binário com o mesmo nome do arquivo gravado com a extensão. Java. Esse arquivo é o programa em Java e pode ser executado em qualquer máquina que possua a Java Virtual Machine instalada. É como se tivéssemos um computador dentro do outro (emulador). JVM para WIN32 JVM para SOLARIS JVM para Linux 2 – O que é preciso para programar em Java? Uma das grandes vantagens de programar em Java e também um motivo que faz a linguagem contar com uma legião de fãs por todo o planeta está na gratuidade de suas ferramentas de desenvolvimentos. Com extensão do Access que fazer parte do pacote de aplicativos Office da Microsoft, tudo o mais que você precisa pode ser obtido na internet. O ambiente de desenvolvimento em si atende pelo nome de JDK – Java Development Kit até a versão 1.6.0, ou SDK – Software Development Kit, da versão 1.4.2 em diante. Mas é conveniente que além do JDK/SDK, você também use um Ambiente de Desenvolvimento Integrado ou IDE – Integrated A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 7 Development Environment, pois o JDK/SDK trabalha em uma janela do sistema e isto pode dificultar um pouco a vida de quem esta iniciando. Todos os exercícios desta apostila foram testados em duas configurações: Um AMD Duron 1000, com 128 de memória ram. Um AMD Sempron 2600 com 1 GB de ram. Creio que você não terá problemas para atingir os mesmos resultados. 2.1 – Baixando o WinZip Baixe o Winzip a partir do site www.winzip.com. Usuários do Windows XP não necessitam deste programa. Qualquer versão deve servir. Você pode inclusive, usar descompactadores de outros fabricantes. Depois de baixar instale o aplicativo Winzip. 2.2 – Baixando o JDK/SDK Baixe o JDK/SDK a partir do site java.sun.com. Tenha certeza de esta baixando a versão para Windows, pois na mesma página encontram-se versões para outros sistemas, como o Linux e Solaris. Site: www.sun.com. 2.3 – Baixando a documentação do JDK/SDK A instalação da documentação do JDK/SDK é opcional, mas muito útil não só a quem está dando os primeiros passos na linguagem, como também para quem já está na estrada há mais tempo e uma vez ou outra precisa recorrer à documentação. O único inconveniente é estar em inglês, um obstáculo a quem não domina este idioma. Mas pode ficar tranqüilo porque a instalação da documentação é opcional. Baixe a documentação no www.sun.com. 2.4 – Baixando o JCreator O JCreator é um programa da categoria IDE – Integrated Development Environment ou melhor, Ambiente de Desenvolvimento Integrado. Ele se integra ao JDK/SDK para tomar mais amigável o uso do ambiente. O JDK/DSK continua sendo o verdadeiro responsável pelo trabalho pesado. Optamos pelo JCreator por ele ser gratuito, pequeno, fácil de usar, estável e cumpre o que promete: edita o código-fonte, compila, executa e ajuda a depurar erros. Outras duas características muito úteis são endentações automáticas e o uso de cores para diferentes partes do código-fonte. Baixe o JCreator LE que é gratuito e atende as nossas necessidades. Baixe no site www.jcreator.com. Na mesma página em que você encontra a versão gratuita está a versão Pro que é paga e só funciona por 30 dias. Tenha certeza de estar baixando a versão LE que é gratuita e atende perfeitamente aos nossos objetivos. A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 8 2.5 – Configurando o JCreator Depois de instalado é hora de configurar o JCreator, quando você iniciar o JCreator pela primeira vez, ele será configurado. Ao dar o duplo clique no ícone do JCreator será exibida a caixa de diálogo: Clique em Next para avançar, aceitando o JCreator como editor associado aos arquivos Java. Como já foi visto, os arquivos com a extensão Java nada mais são do que arquivos texto contendo o código-fonte escrito em linguagem Java.Caso o JCreator não localize automaticamente a pasta na qual você instalou o JDK/SDK, clique na opção Browse para localizá-la. Depois de localizada corretamente, clique em Next para avançar. . Se você instalou a documentação do JDK/SDK, clique no Browse para localiza- la dentro da pasta de instalação do JDK/SDK. Depois de localizada corretamente, clique em Finish para concluir o processo de configuração do A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 9 JCreator. Da próxima vez que for executado, estes procedimentos não serão mais executados. Tela inicial do JCreator A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 0 2.6 – Testando o funcionamento do JDK/SDK e do JCreator Para testar, tanto o JDK/SDK quando o JCreator, vamos iniciar um arquivo .Java em branco. Clicando em: File -> New -> File , depois clique em Next para avançar, depois clicando no botão com as... para escolher a pasta onde você vai guardar seus arquivos. Na opção name digite o nome do seu arquivo Java. E ao final clique em Finish. A linguagem Java diferencia letras maiúsculas de minúsculas. O “A” e o “a”, em se tratando de programação em Java, são completamente diferentes. Portanto, digite o código apresentando, com a máxima atenção, sem se preocupar com a endentação que é automática no JCreator. Digite esse código: import javax.swing.*; public class teste extends JFrame{ public teste(){ super("Testando o JCreator"); setSize(300, 150); setVisible(true); } public static void main(String args[]){ teste app = new teste(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 1 Depois que você digitou o código, é preciso compilá-lo. Compilar um programa é o ato de transformar esse código-fonte em executável ou, no caso do Java, transformar o código-fonte em classe, pronta para ser interpretada pela Máquina Virtual Java, da qual falamos anteriormente. Para compilar um código- fonte no JCreator, basta clicar sobre o botão Complie File. Ao fazer isso, será criada uma classe de com o nome de teste.class. Botão Compile File: Se tudo correu bem, será exibida na parte inferior do JCreator uma janela com a mensagem Process Completed. O processamento não é imediato. Aguarde até que alguma mensagem apareça ou o seu bom senso o alerte para algum problema. E se o JCreator encontrar algum erro durante a compilação ou execução de classe, não se preocupe que você será avisado disto. O JCreator interpreta as mensagens de erro do JDK/SDK e as exibe ao programador. Vamos a um exemplo prático. Troque a letra “t” (minúscula) do nome do programa teste, pela letra “T” (maiúsculas) e compile novamente. Repare que além da mensagem de erro, o JCreator aponta a linha da provável causa do erro. Nota: toda vez que você fizer alguma alteração no código-fonte terá de compilar o código-fonte de novo, para que as mudanças reflitam na classe. Mas se tudo correu bem durante a compilação do teste.Java, agora você tem uma classe pronta para se interpretada pela Máquina Virtual Java, Basta clicar no botão execute File do JCreator. A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 2 Esta classe que compilamos e executamos foi uma forma fácil e rápida de testar o ambiente e também de prepará-lo para os capítulos seguintes da apostila. A única coisa que ela faz é exibir uma janela com a frase na barra “Testando o Uso do JCreator”. Feche a janela e depois pressione qualquer tecla para fechar do console e retornar ao JCreator. Lembre-se que todos os exercícios e tarefas deste apostila são digitadas, compiladas e executadas de dentro do JCreator. Se você teve alguma dificuldade nos passos anteriores, repita-os até está seguro do processo: Digitar -> Compilar-> Executar -> Depurar quando se fizer necessário, pois são tarefas fundamentais para a compreensão e prática dos próximos capítulos. 3 – Conceitos fundamentais de Programação em Java 3.1 – Como programa em Java O processo utilizado na programação em Java é praticamente o mesmo das outras linguagens: Digitar -> Compilar-> Executar -> Depurar quando necessário. O diagrama seguinte ilustra o processo: Digitação do Código .Java Início Depuração sim não Problemas na compilação? Executar .class Fim Compilar .class A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 3 3.2 – Anatomia de uma Classe Como vimos no capítulo anterior, a linguagem Java permite a criação de programas independentes, chamamos de aplicações. Também permite a criação de pequenas aplicações que rodam no navegador web, as applest scripts de servidor, os servlets também criação de componentes. Uma classe padrão: 1. class nomeclasse { 2. public static void main(String args[]){ 3. //implementar código. 4. } 5.} A numeração das linhas não faz parte do programa. Ela serve para ajudar na identificação de cada linha, as quais vamos analisar a partir de agora. public – é um modificador de classes e métodos. Significa que a classe ou método é acessível externamente a esta classe. Isto permite que uma classe possa utilizar alguma funcionalidade de outra classe. static – é um outro modificador de métodos e indica que o método deve ser compartilhado por todos os objetos criados a partir desta classe. void – usado quando o método não retorna valor. main – método principal. Obrigatório em aplicações, pois indica ao compilador o início da execução da linha. (String args []) – trata-se de um vetor de strings e recebe os argumentos passados ao programa. { e } (abre e fecha chaves) – é entre as chaves que todas as instruções do programa são colocadas. Java e Case Sensitive A linguagem Java é sensível ao contexto. Isto quer dizer que para o compilador, palavras iguais grafadas em maiúsculas ou minúsculas são diferentes. 3.3 – Comentários Os comentários servem para facilitar o entendimento de um programa e documentar o código. Java possui algumas formas de inserir comentários: // (duas barras) – para inserir comentários de uma única linha. /* Exemplo de comentários /* e */ - (barra + asterisco e asterisco + barra) – para comentários de mais de uma linha. /* Exemplo de comentários */ A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d oz o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 4 3.4 – O uso do ponto-e-vírgula No final de cada instrução usa-se o ponto-e-vírgula. No início você pode ficar confuso quanto a usar ou não o ponto-e-vírgula, mas é questão de tempo para habituar. Além disso, o compilador informa o erro por ausência ou uso indevido do ponto-e-vírgula. int a, b; a = 10; b = 20; total = a + b; 3.5 – Tipos de dados Java possui oito tipos primitivos que servem para armazenar números inteiros, ponto flutuante, valores booleanos e caracteres. Vamos conhece-las. Inteiros: Tipo Tamanho byte 1 byte short 2 bytes Int 4 bytes long 8 bytes Ponto Flutuante: Tipo Tamanho float 8 byte double 8 bytes Caractere: Tipo Tamanho char 2 bytes Booleano: Tipo Tamanho boolean 1 byte Todos esses tipos de variáveis são escritos em letras minúsculas e são usados, principalmente, na declaração de variáveis: byte idade; short CEP; char controle; Além dos oitos tipos básicos, uma variável pode ter uma classe como tipo, como no exemplo seguinte: String nome = “Java”; O uso da String é muito comum em Java. Alguns caracteres especiais que você pode usar são os seguintes: \n – new linha (quebra de linha) \t – tab (tabulação) \f – formfeed (avanço de formulário) \” – aspas duplas \’ – aspas simples \\ - barra invertida \r – return (retorno do carro) \b – backspace (retorno apagando) A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 5 3.6 - Conversão de tipo Às vezes necessitamos converter um tipo em outro. Um exemplo muito comum é quando recebemos dados em forma de String. Para que possamos efetuar operações matemáticas com esses dados, precisamos converte-los em números. Tabela de conversão de Tipos Para converter String em Faça isto int int novovalor = Integer.parseInt(valor) Float float novovalor = Integer.parseInt(valor) Double Int novovalor = Integer.parseInt(valor) String valor1 = “10”; String valor2 = “20”; String valor3 = “30”; int val1; float val2; double val3; val1 = Integer.parseInt(valor1); val2 = Float.parseFloat(valor2); val3 = Double.parseDouble(valor3); Ou também pode ser feita desta forma: String valor1 = “10”; String valor2 = “20”; String valor3 = “30”; int val1 = Integer.parseInt(valor1); float val2 = Float.parseFloat(valor2); double val3 = Double.parseDouble(valor3); Conversão entre tipos também pode ser implícitas ou explícitas. Veja os exemplos: Conversão implícita: short numero1 = 10; long numero2 = numero1; // convertemos short para long Conversão explícita long numero1 = 10; byte numero2 = (byte) numero1; //convertemos long em byte A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 6 3.7 – Operadores Operadores Operador Nome Exemplo de uso + Adição A + B - Subtração A - B / Divisão A / B * Multiplicação A * B % Módulo A % B - Negativo (unário) A =-A ++ Incremento A++ ++A -- Decremento A— --A Operadores lógicos e relacionais Operador Nome Exemplo de uso ! NOT (não lógico) !A && AND (E lógico) A && B || OR (OU lógico) A || B == Igual A A == B != Diferente A != B < > Menor que Maior que A < B A > B <= >= Menor ou igual Maior ou igual A <= B A >= B Operadores Bitwise Operador Nome Exemplo de uso ~ Inversão ~A & E (and) A & B | OU (OR) A | B ^ XOU (XOR) A ^B << Deslocamento à esquerda A << B >> Deslocamento à direita A >> B = atribuição A = B 3.8 – Variáveis Variáveis são elementos mais básicos que um programa manipula. Uma variável é um espaço reservado na memória do computador para armazenar um determinado tipo de dados. As variáveis são declaradas e, opcionalmente, inicializadas com um valor qualquer. Caso você não atribua nenhum valor, o Java atribuirá um valor default. Variáveis podem ter qualquer nome, desde que não sejam nomes de palavras chaves que são usadas nos programas Java. E as variáveis não podem ser digitadas com espaço e nem acentos. Exemplos: nome123; nome_da_mae; NomeDoPai; Nome A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 7 3.9 – Funções matemáticas O que é? Java possui diversas funções matemáticas que podem ser utilizadas para simplificar cálculos e expressões. Como usar? O uso das funções matemáticas é muito simples: Função Significado Math.abs(valor) Retorna ao valor absoluto Math.sqrt(valor) Retorna a raiz quadrada Math.cos(valor) Retorna o co-seno Math.sin(valor) Retorna o seno Math.tan(valor) Retorna a tangente Math.acos(valor) Retorna ao arco co-seno Math.asin(valor) Retorna ao arco seno Math.atan(valor) Retorna ao arco tangente Math.round(valor) Arredonda para seu inteiro mais próximo Math.floor(valor) Arredonda o valor de um número para baixo Math.ceil(valor) Arredonda o valor de um número para cima Math.log(valor) Retorna o valor do logaritmo natural Math.min(valor,valor1) Retorna o valor mínimo entre 2 números Math.max(valor,valor1) Retorna o valor máximo entre 2 números Math.PI Retorna o valor de PI Math.E Valor da base do logaritmo natural Math.pow(base,potencia) Potenciação (Int) (Math.random()*100) Gera números aleatórios 4 – Introdução a interface gráficas em Java Agora vamos falar sobre o pacote javax.swing, sua relação com o pacote java.awt e introduziremos a classe JFrame, componente principal dos aplicativos de interface gráfica em Java. 4.1 – Entendo o Swing Contrário ao que muitos desenvolvedores e estudantes de Java pensam, o Swing não é um subtítulo do AWT (Abstract Window Toolkit). Em vez disso, o Swing é visto como uma cama disposta confortavelmente sobre o AWT. É praticamente impossível falar de Swing sem mencionar alguns aspectos relevantes e no momento oportuno veremos como eles se complementam. O papel principal do AWT era fornecer um conjunto de componentes gráficos destinados a facilitar a construção das interfaces gráficas para aplicativos e applets em versões mais antigas do Java. De fato, o AWT continua sendo uma das partes mais importantes do JFC (Java Foundation Classes) ao lado de Swing, Accessibility Java 2D e Drag na Drop. Java 2 é agora parte do AWT e o suporte Accessibility já está incluso no Swing. Compone Button List Label Containe r CheckBox Window Frame A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 8 Esta hierarquia não está completamente. Mostramos apenas alguns dos componentes para que o leitor veja como todos eles descendem de um componente em comum, ou seja, a classe Component. Atenção deve ser à classe Container, descendente direta da classe Component. Um Component tem uma representação gráfica, de modo que ele possa ser exibido na tela e forneça meios de interação com o usuário. A classe Componentdefine os métodos, propriedades e eventos que pode ser aplicados a todos os componentes derivados dessa classe, incluído as classes Button, Canvas, Label, Container, etc. O Swing é um grande grupo de componentes visuais escritos em Java puro (diferentes de alguns componentes AWT, que estão associados às capacidades de renderização de interfaces gráficas da plataforma em que o aplicativo está sendo executado). Um componente do Swing é reconhecido pela letra “J” antecedendo o nome do mesmo componente na hierarquia AWT. Assim, se no AWT temos o componente Button, em Swing esse componente é chamado de JButton. Label passa a ser chamado de JLabel, Frame de JFrame e assim por diante. Uma recomendação é que você investigue na documentação on-line a diferença, por exemplo, entre a funcionalidade de um button e um JButton 4.11 – Uso do JFrame na construção de janelas no aplicativo Se você já leu outro material sobre interfaces gráficas em Java, deve estar se perguntando por que preferimos não iniciar a apostila falando de caixas de texto, rótulos, botões e outros componentes de interface. A razão é simples. A janela do aplicativo é a parte mais importante da interface, além de ser o fundamento sobre o qual os demais componentes serão construídos. Mas, o fato de não reservamos muita atenção ao estudo das janelas dos aplicativos provém do uso excessivo dos IDEs visuais (os famosos Ambientes de Desenvolvimento Integrado). A classe JFrame é uma versão melhorada de Frame que traz consigo suporte aos componentes Swing. Essa classe fornece todas as propriedades, métodos e eventos que precisamos para construir janela, tais como as que nossos usuários estão acostumados a visualizar em seus sistemas. Ora, o usuário sabe que a janela de um aplicativo pode ser minimizada, maximizada, redimensionada, e etc. Então vamos demonstrar a classe JFrame serve aos nossos propósitos. A janela principal de um aplicativo de interface gráfica em Java é criada como uma instância da classe JFrame (com exceção de Applets). A classe JFrame herda diretamente de Frame, como mostra a figura seguinte: JFrame Compone Button List Labe l Containe r CheckBox Window Frame A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 1 9 Considerações a serem levadas antes de começar a programa. Quando o usuário encontrar esse símbolo em algum aplicativo, significa que a linha debaixo tem que ser digitada na mesma linha. Exemplo: public class NomePrograma extends JFrame{ Quando você for digitar essa linha no JCreator, ela tem que ser digitada inteira pois o método ou comando quando for compilado, encontrá erro. 4.12 - Janela normal import javax.swing.*; public class PrimeiraJanela extends JFrame{ public PrimeiraJanela(){ super("Nossa primeira janela"); setSize(300, 150); setVisible(true); } public static void main(String args[]){ PrimeiraJanela app = new PrimeiraJanela(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Vamos analisar cada linha do aplicativo. Tenha a certeza de importar esse pacote em todos os aplicativos de interface gráfica que estiver escrevendo: import javax.swing.*; Em seguida temos a definição da classe principal: public class PrimeiraJanela extends JFrame { // a implementação da classe vai aqui. } Observe como a classe PrimeiraJanela, que será a janela do aplicativo, herda da classe JFrame. A partir desse ponto, nossa classe possui todas as propriedades, métodos e eventos que precisamos para que o aplicativo possa ser minimizado, maximizado e fechado por meios dos botões na barra de títulos. Dentro da classe temos o construtor padrão, que será invocado quando uma instância dessa classe for criada (o que acontecerá quando a janela for exibida na tela): import javax.swing.*; public class PrimeiraJanela extends JFrame { public PrimeiraJanela(){ super("Nossa primeira janela"); setSize(300, 150); setVisible(true); } A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 0 Uma classe JFrame pode ser instanciada de duas maneiras: app = new() que cria uma instância da classe que é inicialmente invisível, mas sem um título na barra de títulos, ou: app = new(String Título) que cria uma instância da classe inicialmente invisível e com um objeto String representando o texto da barra de títulos. Assim, no construtor da classe PrimeiraJanela, invocamos o segundo construtor da superclasse JFrame fornecendo o texto que queremos como título da janela. Após a definição do título da janela, temos uma chamada ao método setSize: setSize(300, 150); - (300 – Altura e 150 – largura) Finalmente exibimos a janela efetuando uma chamada ao método setVisible o qual apresenta a seguinte sintaxe: setVisible(true); Para finalizar o código para a janela, temos a definição do método main(): public static void main(String args[]) { PrimeiraJanela app = new PrimeiraJanela(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } Na primeira linha criamos uma instância da classe PrimeiraJanela e a atribuímos à referência app, então acessamos o método setDefaultCloseOperation e fornecemos o valor EXIT_ON_CLOSE, que é uma das constantes da classe JFrame que define como o aplicativo vai se comportar quando o usuário tentar fechar a janela, seja clicando no botão fechar na barra de títulos ou pressionando ALT + F4. Veja no quadro outros valores que você pode usar: Valor da Constante Resultado HIDE_ON_CLOSE Faz com que a janela seja apenas ocultada quando o usuário tentar fechar o aplicativo, ou seja, o programa continua sua execução. O uso desse valor só é justificado quando queremos que a janela ou algum de seus componentes esteja disponível para acesso e manipulação, mas não queremos que isso seja visível aos olhos do usuário. DO_NOTHING_ON_CLOSE Faz com que o usuário não seja capaz de fechar a janela. Neste caso você deve efetuar algum processamento e fechar a janela, baseado em alguma ação específica no seu código. DISPOSE_ON_CLOSE Libera, ou seja, retira da memória, tanto a janela do aplicativo quanto seus componentes. A diferença entre este valor e HIDE_ON_CLOSE é que o primeiro oculta a janela e só então libera da memória. A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 1 4.2 - Janela Maximizada: setExtendedState(MAXIMIZED_BOTH); import javax.swing.*; public class JanelaMaximizada extends JFrame{ public JanelaMaximizada(){ super("Como exibir a janela maximizada"); setSize(300, 150); setVisible(true); setExtendedState(MAXIMIZED_BOTH); } public static void main(String args[]){ JanelaMaximizada app = new JanelaMaximizada(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 4.3 - Janela minimizada: setExtendedState(ICONIFIED); import javax.swing.*; public class JanelaMinimizada extends JFrame{ public JanelaMinimizada(){ super("Como exibir a janela minimizada"); setSize(300, 150); setVisible(true); setExtendedState(ICONIFIED); } public static void main(String args[]){ JanelaMinimizada app= new JanelaMinimizada(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 4.4 – Janela que não pode ser redimensionada: setResizable(false); Por padrão, as janelas dos aplicativos em Java podem ser redimensionadas em tempo de execução, ou seja, durante a execução do programa. Algumas vezes não queremos que o usuário seja capaz de alterar o tamanho da janela. Com a lista abaixo podemos fazer com que a janela não seja redimensionada: import javax.swing.*; public class TamanhoFixo extends JFrame{ public TamanhoFixo(){ super("Uma janela não dimensionável"); setResizable(false); setSize(300, 150); setVisible(true); } public static void main(String args[]){ TamanhoFixo app = new TamanhoFixo(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 2 4.5 – Janela Centralizada: setLocationRelativeTo(null); import javax.swing.*; public class JanelaCentralizada extends JFrame{ public JanelaCentralizada (){ super("Janela Centralizada"); setSize(300, 150); setVisible(true); setLocationRelativeTo(null); } public static void main(String args[]){ JanelaCentralizada app = new JanelaCentralizada (); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 4.6 – Trocando a cor do fundo da janela Embora as propriedades mais importantes da janela do aplicativo já tenham sido vista a possibilidade de alterar a cor de fundo da janela só pôde ser apresentada agora. Isso se deve ao fato de a cor do fundo ser definida não para a classe JFrame, mas para o painel de conteúdo, ou seja o objeto Container que contém os controles da janela. O aplicativo seguinte exibe uma janela com a cor azul definida como cor de fundo. Observado que a cor de fundo para painel não afetará os demais controles da janela. Veja o aplicativo abaixo: import javax.swing.*; import java.awt.*; public class CorDeFundo extends JFrame{ public CorDeFundo(){ super("Definindo a cor de fundo para a janela"); Container tela = getContentPane(); tela.setBackground(Color.blue); setSize(500, 100); setVisible(true); } public static void main(String args[]){ CorDeFundo app = new CorDeFundo(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 3 Temos que importar o pacote import java.awt.*;, pois a classe Container está nele. Veja como uma instância dessa classe é criada e atribuída à referência tela: Container tela = getContentPane(); Após essa declaração o tela é um objeto Container que representa a janela do aplicativo. Por meio dessa referência podemos adicionar e manipular os novos componentes. Comando que troca a cor de fundo da janela: tela.setBackground(Color.blue); Você pode usar: red, white, green, silver 4.7 – Usando cores personalizadas para suas janelas Você sabia que você pode editar cores personalizadas para suas janelas de aplicativos Java? Com o comando setBackground (), isso é possível. Veja o exemplo: import javax.swing.*; import java.awt.*; public class CorDeFundo2 extends JFrame{ public CorDeFundo2(){ super("Definindo a cor de fundo para a janela"); Container tela = getContentPane(); tela.setBackground(new Color(255,128,128)); setSize(500, 100); setVisible(true); } public static void main(String args[]){ CorDeFundo2 app = new CorDeFundo2(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } tela.setBackground(new Color(255,128,128)); tela.setBackground(new Color(255,228,228)); tela.setBackground(new Color(255,255,204)); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 4 4.8 – Definindo um ícone para a janela do aplicativo Nada contra o ícone padrão das janelas dos aplicativos Java. Mas, seria bem interessante se pudéssemos definir um ícone que lembra nossa marca, ou talvez um ícone que represente melhor a funcionalidade do aplicativo. import javax.swing.*; public class DefinirIcone extends JFrame{ public DefinirIcone(){ super("Como definir o ícone para a janela"); ImageIcon icone = new ImageIcon("teste.gif"); setIconImage(icone.getImage()); setSize(300, 150); setVisible(true); } public static void main(String args[]){ DefinirIcone app = new DefinirIcone(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Após executar o aplicativo, observe como o ícone padrão (a xícara de café) foi alterada, substituída pela imagem que foi adicionada no aplicativo. A definição de um ícone para a janela pode ser realizada com apenas duas linhas de código: ImageIcon icone = new ImageIcon("teste.gif"); setIconImage(icone.getImage()); Na primeira linha criamos uma instância da classe ImageIcon e a atribuímos à referência ícone. Objetos desta classe podem ser criados por meio de nove construtores diferentes. Optamos por aquele que recebe o caminho e/ou nome da imagem como argumento. Veja sua sintaxe: ImagemIcon(String caminho_e_nome_da_imagem); ImageIcon("teste.gif"); Só precisamos fornecer o nome da imagem ou o caminho e o nome da imagem. É importante observar que esse caminho é sempre transformado em uma URL antes de ser passado para o construtor da classe. Assim, você pode fornecer uma imagem usando apenas o nome da imagem: ImageIcon icone = new ImageIcon("teste.gif"); O Caminho e o nome da imagem: ImageIcon icone = new ImageIcon("imagens/teste.gif"); Após iniciamos a classe ImageIcon, fazemos uso do método getImage dessa classe para obter a imagem e a definimos como ícone da janela com uma chamada a setIconImage da classe JFrame. setIconImage(icone.getImage()); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 5 5 – Adicionando componentes JLabel ou rótulos na sua janela Freqüentemente chamado de rótulo, esse componente raramente tem seu conteúdo alterado e, quando usado corretamente, possibilita manipulações bem interessantes, como veremos a segui. Vamos começar escrevendo um aplicativo que permite instanciar as classe JLabel de maneiras diferentes. Esse aplicativo que adiciona JLabel, posiciona na janela, altera a cor e altera a fonte desse componente: import javax.swing.*; import java.awt.*; public class ExemploLabel extends JFrame{ JLabel rotulo1,rotulo2,rotulo3,rotulo4; public ExemploLabel(){ super("Exemplo com Label"); Container tela = getContentPane(); setLayout(null); rotulo1 = new JLabel ("Nome"); rotulo2 = new JLabel ("Idade"); rotulo3 = new JLabel ("Telefone"); rotulo4 = new JLabel ("Celular"); rotulo1.setBounds(50,20,80,20); rotulo2.setBounds(50,60,80,20); rotulo3.setBounds(50,100,80,20); rotulo4.setBounds(50,140,80,20); rotulo1.setForeground(Color.red); rotulo2.setForeground(Color.blue);rotulo3.setForeground(new Color(190,152,142)); rotulo4.setForeground(new Color(201,200,100)); rotulo1.setFont(new Font("Arial",Font.BOLD,14)); rotulo2.setFont(new Font("Comic Sans MS",Font.BOLD,16)); rotulo3.setFont(new Font("Courier New",Font.BOLD,18)); rotulo4.setFont(new Font("Times New Roman",Font.BOLD,20)); tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3); tela.add(rotulo4); setSize(400, 250); setVisible(true); setLocationRelativeTo(null); } public static void main(String args[]){ ExemploLabel app = new ExemploLabel(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Veja o programa depois de executado: A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 6 Para entender melhor como funciona o programa destacamos alguns trechos do programa, sempre lembrando que temos que no começo do programa importar esses pacotes que adicionam conteúdos a janela: import javax.swing.*; import java.awt.*; 5.1 - Apos fazermos as importações vamos criar os objetos do tipo JLabel: JLabel rotulo1,rotulo2,rotulo3,rotulo4; 5.2 - Em seguida atribuir o conteúdo ao JLabel: rotulo1 = new JLabel ("Nome"); rotulo2 = new JLabel ("Idade"); rotulo3 = new JLabel ("Telefone"); rotulo4 = new JLabel ("Celular"); 5.3 - Próximo passo definir o largura e altura do JLabel e a coluna e a linha que ele irá ocupar na janela. rotulo1.setBounds(50,20,80,20); rotulo2.setBounds(50,60,80,20); rotulo3.setBounds(50,100,80,20); rotulo4.setBounds(50,140,80,20); 50 – Coluna, 20 – linha, 80 – largura, 20 - comprimento Coluna 50 Linha 20 Linha 60 Linha 100 Linha 140 Comprimento 80 Altura 20 A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 7 5.4 - Próximo passo definir a cor da letra dos componentes JLabel, lembrando que se esses objetos não forem adicionados ao aplicativo, a cor default é preto. rotulo1.setForeground(Color.red); rotulo2.setForeground(Color.blue); 5.5 - Esses dois trechos abaixo especifica como criar cores personalizadas para o componente JLabel. rotulo3.setForeground(new Color(190,152,142)); rotulo4.setForeground(new Color(201,200,100)); 5.6 - E ainda podemos definir a fonte, o estilo e o tamanho da letra do componente JLabel. rotulo1.setFont(new Font("Arial",Font.BOLD,14)); rotulo2.setFont(new Font("Comic Sans MS",Font.BOLD,16)); rotulo3.setFont(new Font("Courier New",Font.BOLD,18)); rotulo4.setFont(new Font("Times New Roman",Font.BOLD,20)); Lembrando que o nome da fonte tem que ser definida como esta na opção de fonte do sistema. Exemplo: Comic Sans MS, Courier New, Arial, Lucida Sans, Tahoma, Times New Roman Já o estilo pode ser definido como: Font.BOLD fonte em negrito Font.ITALIC fonte em itálico Font.PLAIN fonte normal Font.BOLD+Font.ITALIC negrito e itálico E a numeração corresponde o tamanho da fonte. rotulo1.setFont(new Font("Arial",Font.BOLD,14)); Você pode definer 14, 16, 18, 20 entre outros tamanhos que fica a escolha do usuário. E finalmente o método tela que representa a janela deverá ser chamado, onde vai exibir o rótulo o conteúdo do JLabel na janela. tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3); tela.add(rotulo4); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 8 5.7 – Adicionando imagem ao componente JLabel É Possível exibir imagem em rótulos como instâncias da classe JLabel. Tais rótulos podem conter apenas imagens ou imagens e texto. O aplicativo seguinte mostra apenas uma imagem adicionada com um JLabel na janela. Exemplo: import javax.swing.*; import java.awt.*; public class LabelImagem extends JFrame{ JLabel imagem; public LabelImagem(){ super("Uso da classe JLabel com Imagem"); Container tela = getContentPane(); ImageIcon icone = new ImageIcon("sapo.jpeg"); imagem = new JLabel(icone); tela.add(imagem); setSize(500, 460); setVisible(true); } public static void main(String args[]){ LabelImagem app = new LabelImagem(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 2 9 6 – Adicionando componentes JTextField ou caixa de texto na sua janela A classe JTextField possibilita a criação de caixas de texto de uma única linha. Os usos mais freqüentes desse controle são para receber e validar dados informados pelo usuário do aplicativo. Essa classe herda a maioria de seus atributos, eventos e métodos da classe JTextComponent. import javax.swing.*; import java.awt.*; public class ExemploJTextField extends JFrame{ JLabel rotulo1,rotulo2,rotulo3,rotulo4; JTextField texto1,texto2,texto3,texto4; public ExemploJTextField (){ super("Exemplo com JTextField"); Container tela = getContentPane(); setLayout(null); rotulo1 = new JLabel ("Nome"); rotulo2 = new JLabel ("Idade"); rotulo3 = new JLabel ("Telefone"); rotulo4 = new JLabel ("Celular"); texto1 = new JTextField(50); texto2 = new JTextField(3); texto3 = new JTextField(10); texto4 = new JTextField(10); rotulo1.setBounds(50,20,80,20); rotulo2.setBounds(50,60,80,20); rotulo3.setBounds(50,100,80,20); rotulo4.setBounds(50,140,80,20); texto1.setBounds(110,20,200,20); texto2.setBounds(110,60,20,20); texto3.setBounds(110,100,80,20); texto4.setBounds(110,140,80,20); tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3); tela.add(rotulo4); tela.add(texto1); tela.add(texto2); tela.add(texto3); tela.add(texto4); setSize(400, 250); setVisible(true); setLocationRelativeTo(null); } public static void main(String args[]){ ExemploJTextField app = new ExemploJTextField(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Vejamos agora os trechos principais que fazem com que as caixas de texto apareçam na janela. A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 0 Declarar os objetos: TextField texto1,texto2,texto3,texto4; Estipular a quantidade de caracteres para as caixas de texto: texto1 = new JTextField(50); texto2 = new JTextField(3); texto3 = new JTextField(10); texto4 = new JTextField(10); Especificar posicionamento das caixas: texto1.setBounds(110,20,200,20); texto2.setBounds(110,60,20,20); texto3.setBounds(110,100,80,20); texto4.setBounds(110,140,80,20); E chamar o método tela para exibir as caixas na janela: tela.add(texto1); tela.add(texto2); tela.add(texto3);tela.add(texto4); Estamos vendo agora a janela com os componentes acionados. 6.1 – Foco para uma caixa de texto Podemos também utilizar o comando requestFocus(); para apontar o foco para uma determinada caixa de texto: texto1. requestFocus(); 6.2 – Cor da fonte para a caixa de texto Podemos também utilizar o comando setForeground(Color.cor); para alterar a cor da fonte da caixa de texto: texto1. setForeground(Color.cor); 6.3 – Trocando a fonte, estilo e tamanho da fonte do JtextField: Texto1.setFont(new Font("NomeFonte",Font.ESTILO,TAMANHO)); 6.4 – Alinhamento do texto de uma caixa de texto O comando setHorizontalAlignment() define o alinhamento dentro da caixa de texto: texto1. setHorizontalAlignment(JTextField.LEFT); setHorizontalAlignment (JTextField.RIGHT); posiciona o texto dentro da caixa de compra da direita pra esquerda, setHorizontalAlignment(JTextField.LEFT); posiciona o texto dentro da caixa da esquerda pra direita. setHorizontalAlignment(JTextField.CENTER); centraliza o texto dentro da caixa de texto. 6.5 – Alteração da cor de fundo da caixa de texto Como visto anteriormente podemos efetuar essa alteração chamando o comando: texto1.setBackground(Color.blue); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 1 7 – Adicionando componentes JButton ou botões a sua janela A classe JButton herda de AbstractButton, uma classe que herda de JComponet e define o comportamento básico para os botões e itens de menu. Como ocorre com instâncias da classe JLabel, objetos da classe JButton podem conter texto, texto e imagem ou apenas imagens.Seguindo os mesmo métodos dos outros aplicativos de como adicionar componentes na janela esse também segue o mesmo modelo. 7.1 - Botão somente com texto: Veja o exemplo de botão sem imagem: import javax.swing.*; import java.awt.*; public class ExemploBotao extends JFrame{ JButton botão; public ExemploBotao(){ super("Exemplo com JButton"); Container tela = getContentPane(); setLayout(null); botao = new JButton ("Procurar"); botao.setBounds(50,20,100,20); tela.add(botao); setSize(400, 250); setVisible(true); } public static void main(String args[]){ ExemploBotao app = new ExemploBotao(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 7.2 - Botão com texto e imagem: Exemplo de um botão com imagem: import java.awt.*; import java.awt.event.*; public class ExemploBotao extends JFrame{ JButton botao; ImageIcon icone; public ExemploBotao(){ super("Exemplo com JButton"); Container tela = getContentPane(); setLayout(null); icone = new ImageIcon("abrir.gif"); botao = new JButton ("Abrir",icone); botao.setBounds(50,20,100,20); tela.add(botao); setSize(300, 150); setVisible(true); } public static void main(String args[]){ ExemploBotao app = new ExemploBotao(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 2 Analisando o programa, declaramos o ícone como ImageIcon, depois adicionamos a figura a ícone, icone = new ImageIcon("abrir.gif"); no final adicionamos o ícone junto ao texto do botão, botao = new JButton ("Abrir",icone); e com o objeto tela, tela.add(botao); adicionamos o botão a janela. 7.3 - Botão somente com imagem: Exemplo de botão somente com figura: import java.awt.event.*; public class ExemploBotao extends JFrame{ JButton botao; ImageIcon icone; public ExemploBotao(){ super("Exemplo com JButton"); Container tela = getContentPane(); setLayout(null); icone = new ImageIcon("abrir.gif"); botao = new JButton (icone); botao.setBounds(50,20,100,20); tela.add(botao); setSize(400, 250); setVisible(true); setLocationRelativeTo(null); } public static void main(String args[]){ ExemploBotao app = new ExemploBotao(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Muito simples fazer esse tipo de botão com o aplicativo anterior de botão com imagem basta você retirar o texto de dentro da linha que somente a imagem será adicionada, veja a linha: Linha do botão com texto e imagem: botão = new JButton (“Abrir”,icone); Linha do botão somente com imagem: botão = new JButton (icone); Aplicativo com os três botões A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 3 7.4 – Adicionando vários botões na janela Veja o exemplo: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ExemploBotao extends JFrame{ JButton botao1,botao2,botao3,botao4; public ExemploBotao(){ super("Exemplo com JButton"); Container tela = getContentPane(); setLayout(null); botao1 = new JButton ("Procurar"); botao2 = new JButton ("Voltar >>"); botao3 = new JButton ("Próximo >>"); botao4 = new JButton ("Abrir"); botao1.setBounds(50,20,100,20); botao2.setBounds(50,60,100,20); botao3.setBounds(50,100,100,20); botao4.setBounds(50,140,100,20); tela.add(botao1); tela.add(botao2); tela.add(botao3); tela.add(botao4); setSize(400, 250); setVisible(true); } public static void main(String args[]){ ExemploBotao app = new ExemploBotao(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 4 7.5 – Definir a cor de fundo para um componente JButton Para trocar a cor de fundo basta adicionar no aplicativo anterior as seguintes linhas: botao1.setBackground(Color.yellow); botao2.setBackground(Color.red); botao3.setBackground(Color.blue); botao4.setBackground(Color.white); 7.6 – Definir teclas de atalho para objetos JButton Para definir as teclas de atalhos temos que importar o pacote: import java.awt.event.*; no inicio do programa import javax.swing.*; import java.awt.*; import java.awt.event.*; E adicione as seguintes linhas dentro do aplicativo anterior: botao1.setMnemonic(KeyEvent.VK_P); botao2.setMnemonic(KeyEvent.VK_V); botao3.setMnemonic(KeyEvent.VK_X); botao4.setMnemonic(KeyEvent.VK_S); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 5 7.7 – Qual botão reagirá ao pressionamento da tecla enter Você pode passar o foco para um determinado botão assim que pressionar a tecla enter, Com o comando getRootPane().setDefaultButton(). Basta digitar o comando getRootPane().setDefaultButton(botao); botão é o nome do botão que você definiu no programa, nesse exemplo definir o último botão. Quando você pressionar a tecla Enter o botão que receberá ofoco piscará. Veja o resultado: 7.8 - Alterando a cor do texto de um componente JButton Basta adicionar as seguintes linhas dentro do aplicativo: botao1.setForeground(Color.blue); botao2.setForeground(Color.green); botao3.setForeground(Color.red); botao4.setForeground(Color.pink); Resultado do programa: A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 6 8 - Adicionando componentes JPasswordField A classe JPasswordField possibilita a criação de caixas de texto para a digitação de senhas. Esta classe herda diretamente de JTextField e, portanto, permite a aplicação de todas as técnicas já vista na classe JTextField. No aplicativo abaixo vamos ver como funciona esse componente: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ExemploJPasswordField extends JFrame{ JPasswordField caixa; JLabel rotulo; public ExemploJPasswordField(){ super("Exemplo com JPasswordField"); Container tela = getContentPane(); setLayout(null); rotulo = new JLabel("Senha: "); caixa = new JPasswordField(10); rotulo.setBounds(50,20,100,20); caixa.setBounds(50,60,100,20); tela.add(rotulo); tela.add(caixa); setSize(400, 250); setVisible(true); } public static void main(String args[]){ ExemploJPasswordField app = new ExemploJPasswordField(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } 8.1 – Alterando a cor de fonte de um JPasswordField caixa.setForeground(Color.blue); você poderá trocar a cor da letra da caixa de texto. No caso essa letra vai ficar azul. 8.2 – Definir uma cor personalizada para o componente JPasswordField Você também pode definir uma cor para letra conforme seu gosto usando essa linha caixa.setForeground(new Color(115,99,128)); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 7 8.3 – Alterando a cor de fundo de um componente JPasswordField Você pode digitar essa linha no aplicativo anterior: caixa.setBackground(Color.yellow); A caixa de texto dentro ficará com a cor amarela por dentro 8.4 – Cor de fundo personalizada para o componente JPasswordField Ao digitar essa linha no aplicativo dentro da caixa de texto ficará com a cor rosa. Onde você mesmo pode definir sua cor. caixa.setBackground(new Color(255,128,128)); 8.5 – Alterar tipo de fonte, estilo e tamanho da letra do componente Com essa linha você pode alterar o estilo da fonte o tipo e o tamanho da fonte. caixa.setFont(new Font("Ariel",Font.BOLD,20)); Exemplos para essa fonte você pode aproveitar o exemplo do JTextField 8.6 – Alterando o caracter que aparece no componente JPasswordField Você pode personalizar qual caracter vai aparecer na sua caixa de texto basta você digitar essa linha caixa.setEchoChar('*'); Dentro dos parênteses você pode adicionar qualquer caracter. 9 – Controle JFormattedTextField para data, telefone, CEP, CPF O componente JFormattedTextField, similar a uma caixa de texto JTextField, fornece a possibilidade da validação e exibição de dados formatados em tempo real, ao seja, à medida que seu conteúdo é inserido. Esse componente é conhecido nas linguagens Visual Basic, Delphi, C++ como MaskEdit, ou simplesmente caixa de texto tipo máscara. A vantagem de usar uma caixa de texto tipo máscara é que o usuário é forçado a digitar os dados no formato especificado. O controle não aceita conteúdo que não siga os padrões predefinidos. Antes de usar o componente JFormattedTextField, é preciso entender o funcionamento da classe MaskFormatter (do pacote javax.swing.text). Essa classe é usada para especificar a máscara que será usada na caixa de texto. Para definir os caracteres que serão aceitos, você deve usar a seguinte tabela: Símbolo Valor Aceito # Um número ? Uma letra A Uma letra ou um número * Qualquer conteúdo será aceito pelo controle U Uma letra convertida em maiúsculo L Uma letra convertida em minúsculos A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 8 Obtida a tabela vamos ver essa classe em ação. O aplicativo seguinte exibe quatro caixas de texto na qual deve ser digitado o CEP, TELEFONE, CPF e uma DATA qualquer. import javax.swing.*; import javax.swing.text.*; import java.awt.*; import java.awt.event.*; import java.text.*; public class ExemploJFormattedTextField extends JFrame{ JLabel rotulocep,rotulotel,rotulocpf,rotulodata; JFormattedTextField cep,tel, cpf, data; MaskFormatter mascaracep,mascaratel, mascaracpf, mascaradata; public ExemploJFormattedTextField(){ super("Exemplo com JFormattedTextField"); Container tela = getContentPane(); setLayout(null); rotulocep = new JLabel("CEP: "); rotulotel = new JLabel("Telefone: "); rotulocpf = new JLabel("CPF: "); rotulodata = new JLabel("Data: "); rotulocep.setBounds(50,40,100,20); rotulotel.setBounds(50,80,100,20); rotulocpf.setBounds(50,120,100,20); rotulodata.setBounds(50,160,100,20); try{ mascaracep = new MaskFormatter("#####-###"); mascaratel = new MaskFormatter("(##)####-####"); mascaracpf = new MaskFormatter("#########-##"); mascaradata = new MaskFormatter("##/##/####"); mascaracep.setPlaceholderCharacter(‘_’); mascaratel.setPlaceholderCharacter(‘_’); mascaracpf.setPlaceholderCharacter(‘_’); mascaradata.setPlaceholderCharacter(‘_’); } catch(ParseException excp){} cep = new JFormattedTextField(mascaracep); tel = new JFormattedTextField(mascaratel); cpf = new JFormattedTextField(mascaracpf); data = new JFormattedTextField(mascaradata); cep.setBounds(150,40,100,20); tel.setBounds(150,80,100,20); cpf.setBounds(150,120,100,20); data.setBounds(150,160,100,20); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 3 9 tela.add(rotulocep); tela.add(rotulotel); tela.add(rotulocpf); tela.add(rotulodata); tela.add(cep); tela.add(tel); tela.add(cpf); tela.add(data); setSize(400, 250); setVisible(true); } public static void main(String args[]){ ExemploJFormattedTextField app = new ExemploJFormattedTextField(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Para construir o exemplo, usamos as variáveis globais: FormattedTextField cep,tel, cpf, data; MaskFormatter mascaracep,mascaratel, mascaracpf, mascaradata; O código que inicializa a máscara foi inserido em um bloco try{ } de modo a evitar uma exceção: try{ mascaracep = new MaskFormatter("#####-###"); mascaratel = new MaskFormatter("(##)####-####"); mascaracpf = new MaskFormatter("#########-##"); mascaradata = new MaskFormatter("##/##/####"); mascaracep.setPlaceholderCharacter(‘_’); mascaratel.setPlaceholderCharacter(‘_’); mascaracpf.setPlaceholderCharacter(‘_’); mascaradata.setPlaceholderCharacter(‘_’);} catch(ParseException excp){} A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 0 Observe o uso do símbolo # para permitir somente valores numéricos e uma chamada ao método setPlaceholderCharacter para definir o caractere que será exibido como marcador para a máscara, geralmente o caractere de sublinhado. Essa máscara é fornecida como argumento para o construtor da classe JFormattedTextField: cep = new JFormattedTextField(mascaracep); tel = new JFormattedTextField(mascaratel); cpf = new JFormattedTextField(mascaracpf); data = new JFormattedTextField(mascaradata); 9.1 – Adicionando cores na letra do JFormattedTextField Essas linhas podem ser adicionadas no programa anterior acima do objeto tela. cep.setForeground(Color.blue); tel.setForeground(Color.red); cpf.setForeground(Color.green); data.setForeground(new Color(255,128,128)); 9.2 – Adicionando cores no fundo do JFormattedTextField Já esses códigos podem ser adicionados logo abaixo ao anterior. cep.setBackground(Color.yellow); tel.setBackground(Color.yellow); cpf.setBackground(new Color(255,255,204)); data.setBackground(new Color(255,255,204)); 9.3 – Alterando o tipo, estilo, tamanho da fonte do JFormattedTextField Já esses códigos podem ser adicionados logo abaixo ao anterior. cep.setFont(new Font("Times New Roman",Font.BOLD,14)); tel.setFont(new Font("Comic Sans MS",Font.PLAIN,14)); cpf.setFont(new Font("Arial",Font.BOLD,14)); data.setFont(new Font("Tahoma",Font.BOLD,14)); Aplicativo sendo executado depois de todos os códigos Java, estarem adicionados no aplicativo, veja os efeitos com as cores: A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 1 10 – Fazendo um JButton executar uma ação 10.1 – Clicando no botão para fechar uma janela Exemplo: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class ExemploBotaoSair extends JFrame{ JButton botaosair; public ExemploBotaoSair(){ super("Exemplo com JButton"); Container tela = getContentPane(); setLayout(null); botaosair = new JButton ("Sair"); botaosair.setBounds(100,50,100,20); botaosair.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } } ); tela.add(botaosair); setSize(300, 150); setVisible(true); } public static void main(String args[]){ ExemploBotaoSair app = new ExemploBotaoSair(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Como funciona o aplicativo sempre lembrando que temos que importar os pacotes: import javax.swing.*; - pacote que exibe conteúdos na janela import java.awt.*; - pacote que exibe conteúdos na janela import java.awt.event.*; - pacote que trabalha com os eventos A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 2 Como já visto em outros aplicativos: Declarar o componente como JButton: JButton botaosair; Atribuir o texto ao botão: botaosair = new JButton ("Sair"); Posicionar o botão na janela: botaosair.setBounds(100,50,100,20); E chama o objeto tela para exibir o componente: tela.add(botaosair); Explicando o funcionamento do botão: botaosair.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ System.exit(0); } } ); addActionListener – Adicionar ação a lista que estará dentro do botão. new ActionListener – Chamando nova ação a ser listada. public void actionPerformed(ActionEvent e) – performance da ação que o evento público chamara que será o exit. System.exit(0); - Finaliza o aplicativo Use sempre essa lista para fazer qualquer botão funcionar ou chama algum evento: nomebotao.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ } } ); 10.2 – Clicando no mostrar para descobrir a senha digitada Um aplicativo simples mais muito interessante de ser observado, o usuário digita a senha e clicando em mostrar será habilitado um JLabel mostrando qual a senha que foi digitada. Veja o exemplo: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class SenhaDigitada extends JFrame{ JPasswordField caixa; JLabel rotulo, exibir; JButton mostrar; public SenhaDigitada(){ super("Exemplo com JPasswordField"); Container tela = getContentPane(); setLayout(null); A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 3 rotulo = new JLabel("Senha: "); caixa = new JPasswordField(10); exibir = new JLabel("A senha digitada é: "); mostrar = new JButton("Mostrar"); exibir.setVisible(false); rotulo.setBounds(50,20,100,20); caixa.setBounds(50,60,200,20); exibir.setBounds(50,120,200,20); mostrar.setBounds(150,100,80,20); mostrar.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ String senha = new String(caixa.getPassword()); exibir.setVisible(true); exibir.setText(senha); } } ); tela.add(rotulo); tela.add(caixa); tela.add(exibir); tela.add(mostrar); setSize(400, 250); setVisible(true); } public static void main(String args[]){ SenhaDigitada app = new SenhaDigitada(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Um aplicativo muito fácil de ser compreendido, de diferente ao anterior que já foi visto na parte JPasswordField só acrescentamos um novo JLabel que quando iniciado vem oculto, e dentro do evento do botão criamos uma variável chamada senha do tipo String, onde ela recebe uma String que vem da caixa da senha e então é convertida em caracteres normal. E depois será habilitado novamente o JLabel. A p o s t i l a d e J a v a 2 C o m B a n c o d e D a d o s A l e k s a n d r a R . C a r d o z o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . P á g i n a 4 4 10.3 – Clicando no botão somar e será mostrada a soma dos números Já nesse aplicativo alguns métodos novos foram aplicados, esse pede um pouquinho de nossa atenção, alguns componentes foram colocados ao lado para não ficar muito extenso e ser mais fácil de compreender. Veja o exemplo: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Soma extends JFrame{ JLabel rotulo1, rotulo2,exibir; JTextField texto1,texto2; JButton somar; public Soma(){ super("Exemplo de soma"); Container tela = getContentPane(); setLayout(null); rotulo1 = new JLabel("1º Número: "); rotulo2 = new JLabel("2º
Compartilhar