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

Tamanho: px
Começar a partir da página:

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

Transcrição

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 Janela normal Janela Maximizada 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 Criar os objetos JLabel Atribuir o conteúdo ao JLabel Definir Coluna, Linha, largura e altura do JLabel Alterando a cor do JLabel Cores personalizada para o JLabel Alterando tipo da fonte, estilo e tamanho 5.7 Adicionando imagem ao componente JLabel AleksandraR.Cardozo...Página1 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

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 Alterando a cor da letra de um JCheckBox AleksandraR.Cardozo...Página2 14 Uso da Classe JRadioButton para criar botões de opção 15 Fazendo um aplicativo com ComboBox CheckBox RadioButton

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 Índice 27.5 AleksandraR.Cardozo...Página3 Criando Banco de Dados 27.6 Criando Tabelas no MS ACCESS

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 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) Exibindo Dados em uma Lista Exibindo relatório com filtro e chamando outra janela AleksandraR.Cardozo...Página4

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 levando em conta o que havia de melhor e pior nos cinqüenta anos de existências das linguagens de programação. Java parte do que deu ou não certo nas linguagens que a precederam ou lhe foram contemporâneas. E suas características fazem-na uma linguagem muito útil nestes tempos de interconectividade e migração tecnológica constantes. Java é totalmente orientada a objetos é sua parente mais próxima é a linguagem C, C++. Programadores em C sentir-se-ão muito à vontade ao programarem em Java. 1.2 Java: Como surgiu? Java é ao mesmo tempo uma linguagem e um ambiente de programação. Criada pela Sun Microsystems, foi inicialmente destinada a pequenos dispositivos eletrônicos e quase fracassou. Comercialmente só se tornou um quando se voltou para a internet. Isto porque, graças a sua característica multiplataforma, possibilitou a inclusão de pequenas aplicações diretamente nas páginas web, independente do sistema usado no computador do cliente. A origem do nome Java por si só é material para um livro inteiro. Existem muita especulação e lenda associada aos motivos que levaram os criadores da linguagem Java inicialmente chamada OAK, a batizaram-na como este nome e a associaram ao café. O mais importante é você saber que inicialmente a linguagem Java não incluía a internet em suas pretensões. Hoje tem se mostrado a linguagem ideal para desenvolvimento para internet e computação distribuída. Também está voltada às origens, ao ser cogitada pelas grandes indústrias como linguagem de programação para eletroeletrônicos e eletrodomésticos. O principal responsável pelo desenvolvimento da linguagem Java foi o engenheiro James Gosling que, a serviço Sun, comandou e orientou o grupo de trabalho responsável pelo desenvolvimento do ambiente de programação Java. O início do desenvolvimento da linguagem Java data de 1992, mas só em 1995, Java foi apresentada ao mundo como linguagem e ambiente de desenvolvimento multiplataforma. Atualmente o ambiente Java se apresenta de diversas formas, cabendo ao programador escolher a que mais o atrai. AleksandraR.Cardozo...Página5

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 O código fonte é um arquivo digitado em qualquer editor de texto puro e salvo com extensão.java Compilador Java Compilador Javac Binário Java Arquivo.class 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). Interpretador Java (runtime Java ou JVM Java Virtual Machine/Máquina Virtual Java) 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. AleksandraR.Cardozo...Página6 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 em diante. Mas é conveniente que além do JDK/SDK, você também use um Ambiente de Desenvolvimento Integrado ou IDE Integrated

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 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: 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 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 Na AleksandraR.Cardozo...Página7 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.

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.. AleksandraR.Cardozo...Página8 Se você instalou a documentação do JDK/SDK, clique no Browse para localizala dentro da pasta de instalação do JDK/SDK. Depois de localizada corretamente, clique em Finish para concluir o processo de configuração do

9 JCreator. Da próxima vez que for executado, estes procedimentos não serão mais executados. Tela inicial do JCreator AleksandraR.Cardozo...Página9

10 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: public class teste extends JFrame{ public teste(){ super("testando o JCreator"); setsize(300, 150); teste app = new teste(); AleksandraR.Cardozo...Página10

11 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ódigofonte 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. AleksandraR.Cardozo...Página11

12 Esta classe que compilamos e executamos foi uma forma fácil e rápida de testar o ambiente e também de prepará-lo para os capítulos seguintes da apostila. A única coisa que ela faz é exibir uma janela com a frase na barra Testando o Uso do JCreator. Feche a janela e depois pressione qualquer tecla para fechar do console e retornar ao JCreator. Lembre-se que todos os exercícios e tarefas deste apostila são digitadas, compiladas e executadas de dentro do JCreator. Se você teve alguma dificuldade nos passos anteriores, repita-os até está seguro do processo: Digitar -> Compilar-> Executar -> Depurar quando se fizer necessário, pois são tarefas fundamentais para a compreensão e prática dos próximos capítulos. 3 Conceitos fundamentais de Programação em Java 3.1 Como programa em Java O processo utilizado na programação em Java é praticamente o mesmo das outras linguagens: Digitar -> Compilar-> Executar -> Depurar quando necessário. O diagrama seguinte ilustra o processo: Início Digitação do Código.Java Compilar.class Problemas na compilação? sim Depuração não Executar AleksandraR.Cardozo...Página12.class Fim

13 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 { //implementar código 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. AleksandraR.Cardozo...Página13 /* Exemplo de comentários /* e */ - (barra + asterisco e asterisco + barra) para comentários de mais de uma linha. /* Exemplo de comentários */

14 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 byte short Int long Tamanho 1 byte 2 bytes 4 bytes 8 bytes Ponto Flutuante: Caractere: Booleano: Tipo float double Tipo char Tipo boolean Tamanho 8 byte 8 bytes Tamanho 2 bytes Tamanho 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) \ AleksandraR.Cardozo...Página14 aspas duplas \ aspas simples \\ - barra invertida \r return (retorno do carro) \b backspace (retorno apagando)

15 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 AleksandraR.Cardozo...Página15 long numero1 = 10; byte numero2 = (byte) numero1; //convertemos long em byte

16 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 Variáveis ++A -- Decremento A --A Operadores lógicos e relacionais Operador Nome Exemplo de uso! NOT (não lógico)!a && AND (E lógico) A && B OR (OU lógico) A B == Igual A A == B!= Diferente A!= B < Menor que A < B > <= >= Maior que Menor ou igual Maior ou igual A > B 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 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 AleksandraR.Cardozo...Página16 variáveis não podem ser digitadas com espaço e nem acentos. Exemplos: nome123; nome_da_mae; NomeDoPai; Nome

17 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 Math.abs(valor) Math.sqrt(valor) Math.cos(valor) Math.sin(valor) Math.tan(valor) Math.acos(valor) Math.asin(valor) Math.atan(valor) Math.round(valor) Math.floor(valor) Math.ceil(valor) Math.log(valor) Math.min(valor,valor1) Math.max(valor,valor1) Math.PI Math.E Math.pow(base,potencia) (Int) (Math.random()*100) Significado Retorna ao valor absoluto Retorna a raiz quadrada Retorna o co-seno Retorna o seno Retorna a tangente Retorna ao arco co-seno Retorna ao arco seno Retorna ao arco tangente Arredonda para seu inteiro mais próximo Arredonda o valor de um número para baixo Arredonda o valor de um número para cima Retorna o valor do logaritmo natural Retorna o valor mínimo entre 2 números Retorna o valor máximo entre 2 números Retorna o valor de PI Valor da base do logaritmo natural Potenciação 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 AleksandraR.Cardozo...Página17 List Button Containe r Window Frame Label CheckBox

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

19 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 Janela normal public class PrimeiraJanela extends JFrame{ public PrimeiraJanela(){ super("nossa primeira janela"); setsize(300, 150); PrimeiraJanela app = new PrimeiraJanela(); Vamos analisar cada linha do aplicativo. Tenha a certeza de importar esse pacote em todos os aplicativos de interface gráfica que estiver escrevendo: 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): public class PrimeiraJanela extends JFrame { AleksandraR.Cardozo...Página19 public PrimeiraJanela(){ super("nossa primeira janela"); setsize(300, 150);

20 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: 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(); 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 HIDE_ON_CLOSE DO_NOTHING_ON_CLOSE Resultado 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. 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. 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. DISPOSE_ON_CLOSE AleksandraR.Cardozo...Página20

21 4.2 - Janela Maximizada: setextendedstate(maximized_both); public class JanelaMaximizada extends JFrame{ public JanelaMaximizada(){ super("como exibir a janela maximizada"); setsize(300, 150); setextendedstate(maximized_both); JanelaMaximizada app = new JanelaMaximizada(); Janela minimizada: setextendedstate(iconified); public class JanelaMinimizada extends JFrame{ public JanelaMinimizada(){ super("como exibir a janela minimizada"); setsize(300, 150); setextendedstate(iconified); JanelaMinimizada app = new JanelaMinimizada(); 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: public class TamanhoFixo extends JFrame{ public TamanhoFixo(){ super("uma janela não dimensionável"); setresizable(false); setsize(300, 150); AleksandraR.Cardozo...Página21 TamanhoFixo app = new TamanhoFixo();

22 4.5 Janela Centralizada: setlocationrelativeto(null); public class JanelaCentralizada extends JFrame{ public JanelaCentralizada (){ super("janela Centralizada"); setsize(300, 150); setlocationrelativeto(null); JanelaCentralizada app = new JanelaCentralizada (); 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: public class CorDeFundo extends JFrame{ public CorDeFundo(){ super("definindo a cor de fundo para a janela"); tela.setbackground(color.blue); setsize(500, 100); CorDeFundo app = new CorDeFundo(); AleksandraR.Cardozo...Página22

23 Temos que importar o pacote, pois a classe Container está nele. Veja como uma instância dessa classe é criada e atribuída à referência tela: 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: public class CorDeFundo2 extends JFrame{ public CorDeFundo2(){ super("definindo a cor de fundo para a janela"); tela.setbackground(new Color(255,128,128)); setsize(500, 100); CorDeFundo2 app = new CorDeFundo2(); tela.setbackground(new Color(255,128,128)); tela.setbackground(new Color(255,228,228)); AleksandraR.Cardozo...Página23 tela.setbackground(new Color(255,255,204));

24 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. 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); DefinirIcone app = new DefinirIcone(); 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: AleksandraR.Cardozo...Página24 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());

25 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: public class ExemploLabel extends JFrame{ JLabel rotulo1,rotulo2,rotulo3,rotulo4; public ExemploLabel(){ super("exemplo com Label"); 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); setlocationrelativeto(null); ExemploLabel app = new ExemploLabel(); AleksandraR.Cardozo...Página25 Veja o programa depois de executado:

26 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: Apos fazermos as importações vamos criar os objetos do tipo JLabel: JLabel rotulo1,rotulo2,rotulo3,rotulo4; Em seguida atribuir o conteúdo ao JLabel: rotulo1 = new JLabel ("Nome"); rotulo2 = new JLabel ("Idade"); rotulo3 = new JLabel ("Telefone"); rotulo4 = new JLabel ("Celular"); 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 Linha 20 Comprimento 80 Linha 60 Linha 100 Altura 20 AleksandraR.Cardozo...Página26 Coluna 50 Linha 140

27 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); 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)); 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. AleksandraR.Cardozo...Página27 tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3); tela.add(rotulo4);

28 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: public class LabelImagem extends JFrame{ JLabel imagem; public LabelImagem(){ super("uso da classe JLabel com Imagem"); ImageIcon icone = new ImageIcon("sapo.jpeg"); imagem = new JLabel(icone); tela.add(imagem); setsize(500, 460); LabelImagem app = new LabelImagem(); AleksandraR.Cardozo...Página28

29 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. public class ExemploJTextField extends JFrame{ JLabel rotulo1,rotulo2,rotulo3,rotulo4; JTextField texto1,texto2,texto3,texto4; public ExemploJTextField (){ super("exemplo com JTextField"); 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); setlocationrelativeto(null); ExemploJTextField app = new ExemploJTextField(); AleksandraR.Cardozo...Página29 Vejamos agora os trechos principais que fazem com que as caixas de texto apareçam na janela.

30 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 AleksandraR.Cardozo...Página30 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);

31 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 Botão somente com texto: Veja o exemplo de botão sem imagem: public class ExemploBotao extends JFrame{ JButton botão; public ExemploBotao(){ super("exemplo com JButton"); setlayout(null); botao = new JButton ("Procurar"); botao.setbounds(50,20,100,20); tela.add(botao); setsize(400, 250); ExemploBotao app = new ExemploBotao(); Botão com texto e imagem: Exemplo de um botão com imagem: public class ExemploBotao extends JFrame{ JButton botao; ImageIcon icone; public ExemploBotao(){ super("exemplo com JButton"); setlayout(null); icone = new ImageIcon("abrir.gif"); botao = new JButton ("Abrir",icone); botao.setbounds(50,20,100,20); tela.add(botao); setsize(300, 150); AleksandraR.Cardozo...Página31 ExemploBotao app = new ExemploBotao();

32 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 Botão somente com imagem: Exemplo de botão somente com figura: public class ExemploBotao extends JFrame{ JButton botao; ImageIcon icone; public ExemploBotao(){ super("exemplo com JButton"); setlayout(null); icone = new ImageIcon("abrir.gif"); botao = new JButton (icone); botao.setbounds(50,20,100,20); tela.add(botao); setsize(400, 250); setlocationrelativeto(null); ExemploBotao app = new ExemploBotao(); 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 AleksandraR.Cardozo...Página32

33 7.4 Adicionando vários botões na janela Veja o exemplo: public class ExemploBotao extends JFrame{ JButton botao1,botao2,botao3,botao4; public ExemploBotao(){ super("exemplo com JButton"); 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); ExemploBotao app = new ExemploBotao(); AleksandraR.Cardozo...Página33

34 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: no inicio do programa 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); AleksandraR.Cardozo...Página34

35 7.7 Qual botão reagirá ao pressionamento da tecla enter Você pode passar o foco para um determinado botão assim que pressionar a tecla enter, Com o comando getrootpane().setdefaultbutton(). Basta digitar o comando getrootpane().setdefaultbutton(botao); botão é o nome do botão que você definiu no programa, nesse exemplo definir o último botão. Quando você pressionar a tecla Enter o botão que receberá o foco piscará. Veja o resultado: 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: AleksandraR.Cardozo...Página35

36 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: public class ExemploJPasswordField extends JFrame{ JPasswordField caixa; JLabel rotulo; public ExemploJPasswordField(){ super("exemplo com JPasswordField"); 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); ExemploJPasswordField app = new ExemploJPasswordField(); 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 AleksandraR.Cardozo...Página36 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));

37 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 # Um número Valor Aceito? Uma letra AleksandraR.Cardozo...Página37 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

38 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.text.*; 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"); 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); AleksandraR.Cardozo...Página38 cep.setbounds(150,40,100,20); tel.setbounds(150,80,100,20); cpf.setbounds(150,120,100,20); data.setbounds(150,160,100,20);

39 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); ExemploJFormattedTextField app = new ExemploJFormattedTextField(); 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( _ ); AleksandraR.Cardozo...Página39 mascaradata.setplaceholdercharacter( _ ); catch(parseexception excp){

40 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: AleksandraR.Cardozo...Página40

41 10 Fazendo um JButton executar uma ação 10.1 Clicando no botão para fechar uma janela Exemplo: public class ExemploBotaoSair extends JFrame{ JButton botaosair; public ExemploBotaoSair(){ super("exemplo com JButton"); setlayout(null); botaosair = new JButton ("Sair"); botaosair.setbounds(100,50,100,20); botaosair.addactionlistener( new ActionListener(){ System.exit(0); ); tela.add(botaosair); setsize(300, 150); ExemploBotaoSair app = new ExemploBotaoSair(); Como funciona o aplicativo sempre lembrando que temos que importar os pacotes: AleksandraR.Cardozo...Página41 - pacote que exibe conteúdos na janela - pacote que exibe conteúdos na janela - pacote que trabalha com os eventos

42 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(){ 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(){ ); 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: public class SenhaDigitada extends JFrame{ JPasswordField caixa; JLabel rotulo, exibir; JButton mostrar; AleksandraR.Cardozo...Página42 public SenhaDigitada(){ super("exemplo com JPasswordField"); setlayout(null);

43 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(){ String senha = new String(caixa.getPassword()); exibir. exibir.settext(senha); ); tela.add(rotulo); tela.add(caixa); tela.add(exibir); tela.add(mostrar); setsize(400, 250); SenhaDigitada app = new SenhaDigitada(); 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. AleksandraR.Cardozo...Página43

44 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: public class Soma extends JFrame{ JLabel rotulo1, rotulo2,exibir; JTextField texto1,texto2; JButton somar; public Soma(){ super("exemplo de soma"); setlayout(null); rotulo1 = new JLabel("1º Número: "); rotulo2 = new JLabel("2º Número: "); texto1 = new JTextField(5); texto2 = new JTextField(5); exibir = new JLabel(""); somar = new JButton("Somar"); rotulo1.setbounds(50,20,100,20); rotulo2.setbounds(50,60,100,20); texto1.setbounds(120,20,200,20); texto2.setbounds(120,60,200,20); exibir.setbounds(50,120,200,20); somar.setbounds(150,100,80,20); somar.addactionlistener( new ActionListener(){ int numero1,numero2,soma; soma=0; numero1 = Integer.parseInt(texto1.getText()); numero2 = Integer.parseInt(texto2.getText()); soma = numero1 + numero2; exibir. exibir.settext("a soma é: "+soma); ); exibir.setvisible(false); tela.add(rotulo1); tela.add(rotulo2); AleksandraR.Cardozo...Página44 tela.add(texto1); tela.add(texto2); tela.add(exibir); tela.add(somar); setsize(400, 250);

45 Soma app = new Soma(); A habilitação do botão já foi explicado no aplicativo anterior, o que foi acrescentado nesse aplicativo, foram os comandos que trabalham com conversão de números. Foram declaradas três variáveis do tipo inteira: int numero1, numero2, soma; Foi atribuído zero a variável soma, para a variável ser iniciada vazia: soma=0; Como texto1, texto2 são String, melhor dizer texto para armazená-las nas variáveis numero1 e numero2, será necessário converte a String em números. Nesse caso estamos convertendo o texto1 em inteiro para isso usamos o Integer.parseInt(), e armazenamos na variável numero1 que é inteira. Isso ocorrerá para a texto2 e a variável numero2. numero1 = Integer.parseInt(texto1.getText()); numero2 = Integer.parseInt(texto2.getText()); Depois de convertido os valores agora é só fazer a soma e armazenar na variável correspondente a soma, veja: soma = numero1 + numero2; Chamamos o comando para habilitar o JLabel exibir e jogamos o valor de soma dentro do texto do Jlabel exibir para se apresentado no aplicativo. AleksandraR.Cardozo...Página45 exibir. exibir.settext("a soma é: "+soma); Para variáveis do tipo Float, usaremos: Float.parseFloat(); Para variáveis do Double, usaremos Doublé.parseDouble();

46 10.4 Clicando no botão limpar e as caixas de texto serão limpas Depois de usadas nada como limpar suas caixas de texto, esta ai o exemplo que irá ajudá-lo(a). public class Limpar extends JFrame{ JLabel rotulo1, rotulo2; JTextField texto1,texto2; JButton limpar; public Limpar(){ super("exemplo Limpar"); setlayout(null); rotulo1 = new JLabel("1º Número: "); rotulo2 = new JLabel("2º Número: "); texto1 = new JTextField(5); texto2 = new JTextField(5); limpar = new JButton("Limpar"); rotulo1.setbounds(50,20,100,20); rotulo2.setbounds(50,60,100,20); texto1.setbounds(120,20,200,20); texto2.setbounds(120,60,200,20); limpar.setbounds(150,100,80,20); limpar.addactionlistener( new ActionListener(){ 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); Limpar app = new Limpar(); Nada de diferente no aplicativo somente as linhas que vão limpar as caixas de texto e passar o foco para a primeira caixa vejam: texto1.settext(null); ou texto1.settext( ); texto2.settext(null); ou texto2.settext( ); AleksandraR.Cardozo...Página46 texto1.requestfocus(); É atribuído null dentro das caixas, pois nulo significa vazio e requestfocus() passa o foco para a caixa selecionada pelo usuário.

47 10.5 Ocultar e Exibir componentes Esse aplicativo é só para teste não tem muito que ser explicado, pois a única coisa diferente é que quando você clica em ocultar os JLabels some e você clica em exibir os JLabels aparecem novamente na janela. Isso ocorre por que o comando setvisible(false), oculta e o comando setvisible(true), exibe mostra na janela. Veja o exemplo: public class OcultarExibir extends JFrame{ JLabel rotulo1, rotulo2; JButton ocultar,exbir; public OcultarExibir(){ super("exemplo de ocultar e exibir componente"); setlayout(null); rotulo1 = new JLabel("Rótulo 1"); rotulo2 = new JLabel("Rótulo 2"); ocultar = new JButton("Ocultar "); exbir = new JButton("Exibir "); rotulo1.setbounds(50,20,100,20); rotulo2.setbounds(50,60,100,20); ocultar.setbounds(100,100,80,20); exbir.setbounds(250,100,80,20); ocultar.addactionlistener( new ActionListener(){ rotulo1.setvisible(false); rotulo2.setvisible(false); ); exbir.addactionlistener( new ActionListener(){ rotulo1. rotulo2. ); tela.add(rotulo1); tela.add(rotulo2); tela.add(ocultar); tela.add(exbir); setsize(400, 250); AleksandraR.Cardozo...Página47 OcultarExibir app = new OcultarExibir();

48 10.6 Desabilitar e Habilitar Exibir componentes Nada de diferente também somente o comando setenabled(true) que habilita e o setenabled(false) eu desabilita. Veja o exemplo: public class DesabilitarHabilitar extends JFrame{ JLabel rotulo1, rotulo2; JButton desabilitar,habilitar; public DesabilitarHabilitar(){ super("exemplo de Desabilitar e Habilitar componentes"); setlayout(null); rotulo1 = new JLabel("Rótulo 1"); rotulo2 = new JLabel("Rótulo 2"); desabilitar = new JButton("Desabilitar"); habilitar = new JButton("Habilitar"); rotulo1.setbounds(50,20,100,20); rotulo2.setbounds(50,60,100,20); desabilitar.setbounds(80,100,100,20); habilitar.setbounds(250,100,100,20); desabilitar.addactionlistener( new ActionListener(){ rotulo1.setenabled(false); rotulo2.setenabled(false); ); habilitar.addactionlistener( new ActionListener(){ rotulo1.setenabled(true); rotulo2.setenabled(true); ); tela.add(rotulo1); tela.add(rotulo2); tela.add(desabilitar); tela.add(habilitar); setsize(400, 250); DesabilitarHabilitar app = new DesabilitarHabilitar(); AleksandraR.Cardozo...Página48

49 11 Apresentando a classe JList A classe JList permite a criação do componente conhecido como caixa de listagem ou ListBox (nome popular entre programadores delphi e VB). Uma caixa de listagem é um controle visual que exibe uma série de itens dos quais o usuário pode selecionar um ou mais itens. A maneira mais usual de criar um caixa de listagem em Java é usar um vetor de Strings para definirmos os itens que serão exibidos na lista. O aplicativo seguinte apresenta uma janela que contém uma caixa de listagem e um botão. O usuário pode selecionar uma entre oito cidades. Ao clicar no botão exibir, o valor selecionado será exibido em um JLabel. public class ExemploJList extends JFrame{ JList lista; String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo", "Bahia","Pernambuco","Rio Grande do Sul","Acre"; JButton exibir; JLabel rotulo; public ExemploJList(){ super("exemplo de List"); 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(){ rotulo.settext("o estado é: "+lista.getselectedvalue().tostring()); ); tela.add(painelrolagem); tela.add(exibir); tela.add(rotulo); setsize(400, 250); ExemploJList app = new ExemploJList(); AleksandraR.Cardozo...Página49 Experimente selecionar um dos itens da lista e clicar no botão Exibir. Observe que o texto do item selecionado é exibido em uma caixa de mensagem. Vamos analisar o código e ver como isso foi possível.

50 O primeiro passo é declarar uma instância da classe JList chamada lista: JList lista; Em seguida declaramos e inicializamos um vetor de objetos String que contém os itens que estarão disponíveis na list: String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Esprito Santo", "Bahia","Pernambuco","Rio Grande do Sul","Acre"; Os itens do vetor cidades são atribuídos à caixa de listagem por meio da seguinte instrução: lista = new JList(cidades); É importante observar que o vinculo entre a caixa de listagem e o vetor cidades não termina após essa instrução. Mais tarde, se alguma alteração for feita nos elementos do vetor, você poderá atualizar a lista com uma chamada ao método repaint da classe JComponent. lista.rapaint(); Após a atribuição dos itens do vetor cidades à lista, temos que definir a quantidade de elementos que serão visíveis sem a necessidade de acionar as barras de rolagem isso é feito na linha: lista.setvisiblerowcount(5); Como queremos que o usuário seja capaz de selecionar apenas um item por vez efetuaremos uma chamada ao método setselectionmode e usaremos uma das constantes da classe ListSelectionModel para definir a lista como sendo de seleção única: lista.setselectionmode(listselectionmodel.single_selection); Uma lista não fornece barras de rolagem por padrão. Dessa forma, uma instância da classe JScrollPane é usada para essa finalidade: JScrollPane painelrolagem = new JScrollPane(lista); Quando clicamos no botão exibir, o método actionperformed da classe publica. Chamado: exibir.addactionlistener( new ActionListener(){ rotulo.settext( o estado é: +lista.getselectedvalue().tostring()); ); Nós AleksandraR.Cardozo...Página50 efetuamos uma chamada ao método getselectedvalue().tostring()); da classe JList para obter o valor inteiro correspondente ao item selecionados. Esse valor inicia em 0 e vai até a quantidade de itens menos 1. Obtido o valor, só precisamos fornece-lo como índice para o valor o vetor cidades exibir o resultado final na caixa de listagem.

51 11.1 Selecionando múltiplos itens em uma caixa de listagem No tópico anterior escrevemos um aplicativo que permita selecionar um item em uma caixa de listagem e exibir seu valor e, um JLabel. No exemplo apenas um dos itens podia ser selecionado. É possível, porém, selecionar mais de um item em uma caixa de listagem. Tudo que temos a fazer é alterar o valor da constante fornecida para o método setselectionmode. Veja os valores possíveis: Valor da Constante SINGLE_SELECTION SINGLE_INTERVAL_SELECTION MULTIPLE_INTERVAL_SELECTION Resultado Apenas um item pode ser selecionado de cada vez. Vários itens em um intervalo contíguo podem ser selecionados. Vários podem ser selecionados sem a restrição de intervalo. O exemplo seguinte é uma pequena modificação do exemplo anterior que mostra como vários itens podem ser selecionados e como você pode atribuí-los a um vetor de objetos de modo a manipulá-los mais tarde: public class ExemploJList2 extends JFrame{ JList lista; String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo", "Bahia","Pernambuco","Rio Grande do Sul","Acre"; JButton exibir; public ExemploJList2(){ super("exemplo de List"); setlayout(null); exibir = new JButton("Exibir"); lista = new JList(cidades); lista.setvisiblerowcount(5); JScrollPane painelrolagem = new JScrollPane(lista); lista.setselectionmode(listselectionmodel.multiple_interval_selection); painelrolagem.setbounds(40,50,150,100); exibir.setbounds(270,50,100,30); exibir.addactionlistener( new ActionListener(){ Object selecionados[] = lista.getselectedvalues(); String resultados = "Valores selecionados:\n"; for(int i=0;i<selecionados.length;i++) resultados += selecionados[i].tostring()+"\n"; JOptionPane.showMessageDialog(null,resultados); ); tela.add(painelrolagem); tela.add(exibir); setsize(400, 250); AleksandraR.Cardozo...Página51 ExemploJList2 app = new ExemploJList2();

52 Execute o código e experimente selecionar mais de um item na caixa de listagem. Lembre-se de que mais de um item pode ser selecionados mantendo a tecla Crtl pressionada enquanto clicamos nos outros itens. Clique no botão exibir, e você verá a caixa de mensagem exibindo os valores dos itens selecionados. Este exemplo apresenta poucas modificações. A primeira delas é a modificação do valor fornecido para o método setselectionmode: lista.setselectionmode(listselectionmodel.multiple_interval_selection); Veja que agora a lista permite que vários itens sejam selecionados. A outra modificação aconteceu no evento do botão exibir: exibir.addactionlistener( new ActionListener(){ Object selecionados[] = lista.getselectedvalues(); String resultados = "Valores selecionados:\n"; for(int i=0;i<selecionados.length;i++) resultados += selecionados[i].tostring()+"\n"; JOptionPane.showMessageDialog(null,resultados); ); A classe JList possui um método chamado getselectedvalues que retorna um vetor de objetos da classe Object. Este valor contém todos os itens selecionados na caixa de listagem. Assim, a linha: Object selecionados[ ] = lista.getselectedvalues(); Quando foi adicionado \n no final da frase Valores selecionados, que como visto \n pula uma linha na próxima palavra que será exibida e não ao lado. Criar um vetor chamado selecionados e atribui a ele os itens retornados pelo método getselectedvalues. Mantenha em mente que temos um vetor objetos da classe Object. Esquecer-se deste detalhe pode ser desastroso. O laço for interage com cada um dos elementos do vetor selecionados, efetuando chamadas ao método String de cada um e concatenando o resultado obtido com o valor da variável resultados. Cada vez que selecionados jogar um item dentro de resultado, cada item cada item vai com a opção de pular uma linha por isso os itens são exibidos um em baixo do outro. A caixa de mensagem JOptionPane será estuda mais profundamente nos próximos capítulos da apostila. A opção showmessagedialog, que dizer uma mensagem AleksandraR.Cardozo...Página52 de dialogo será exibida ao usuário.

53 11.2 Trocando a cor da letra do JList É possível trocar a cor da letra do componente JList abaixo do comando onde você define em qual linha e coluna vai ficar o componente você pode digitar essa linha: lista.setforeground(color.blue); 11.3 Trocando a cor de fundo do JList lista.setbackground(color.yellow); 11.4 Trocando tipo, estilo e tamanho da fonte do Jlist lista.setfont(new Font("Times New Roman",Font.BOLD,16)); Execute o aplicativo ExemploJList3.java que você poderá conferir onde aplicar os comandos para as alterações citadas acima. 12 uso da classe JComboBox na criação de caixas de combinação Objetos da classe JComboBox são usados para a criação de controles conhecidos como caixas de combinação, combo box ou lista drop-down. A diferença entre a caixa de listagem e caixa de combinação é que esta última exibe seus itens somente quando clicamos na seta (indicativo visual de que o controle possui itens entre os quais podemos escolher) ou pressionando F4 quando o foco está no componente. Além, disso, caixas de combinação são usadas quando o espaço é insuficiente para acomodar uma caixa de listagem. A classe JcomboBox herda de JComponent, como mostra o relacionamento seguinte: Component List Button Container Label CheckBox AleksandraR.Cardozo...Página53 Window Frame J Component JComboBox

54 O aplicativo seguinte apresenta uma janela que contém uma caixa de combinação e um botão. Quando selecionamos um item no JComboBox e pressionamos o botão, Exibir o valor do item selecionado é exibido em uma caixa de mensagem. Eis a listagem para o exemplo: public class ExemploJComboBox extends JFrame{ JComboBox lista; String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo","Bahia","Pernambuco","Rio Grande do Sul","Acre"; JButton exibir; JLabel rotulo; public ExemploJComboBox(){ super("exemplo de JComboBox"); setlayout(null); exibir = new JButton("Exibir"); rotulo = new JLabel(""); lista = new JComboBox(cidades); lista.setmaximumrowcount(5); lista.setbounds(50,50,150,30); exibir.setbounds(270,50,100,30); rotulo.setbounds(50,150,200,30); exibir.addactionlistener( new ActionListener(){ rotulo.settext("o estado é: "+lista.getselecteditem().tostring()); ); tela.add(lista); tela.add(exibir); tela.add(rotulo); setsize(400, 250); ExemploJComboBox app = new ExemploJComboBox(); AleksandraR.Cardozo...Página54 Existem muitas similaridades na maneira de manipular as classes JList e JComboBox. Durante a análise você perceberá que muitas das técnicas que

55 usamos anteriormente podem ser aplicadas quando estiver lidando com caixas de combinação. O primeiro passo foi declarar um objeto da classe JComboBox: JComboBox Lista; Em seguida temos um vetor de nomes de cidades que será usado para definimos os itens da caixa de combinação: String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo","Bahia","Pernambuco","Rio Grande do Sul","Acre"; Temos um vetor de oito elementos que são atribuídos à caixa de combinação com a seguinte instrução: lista = new JComboBox(cidades); Um objeto da classe JComboBox já possui barras de rolagem. Tiramos proveito desse fator efetuamos uma chamada ao metido setmaximumrowcount para definir a quantidade e itens visíveis na lista sem a necessidade de acionar as barras de rolagem: lista.setmaximumrowcount(5); O processo usado para exibir o item selecionado é o mesmo que usamos para as caixas de listagem. exibir.addactionlistener( new ActionListener(){ rotulo.settext("o estado é: +lista.getselecteditem().tostring()); ); tela.add(lista); tela.add(exibir); tela.add(rotulo); setsize(400, 250); 12.1 Como criar uma caixa de combinação editável Se você experimentou com o exemplo anterior deve ter percebido que a caixa de combinação é somente leitura, ou seja, estamos limitados aos itens disponíveis para a escolha. Existe, porém, uma forma de permitir que o usuário digite o valor desejado em uma caixa de combinação. Basta efetuar uma chamada ao método seteditable fornecendo o valor true como argumento: AleksandraR.Cardozo...Página55 lista.seteditable(true);

56 public class ExemploJComboBox2 extends JFrame{ JComboBox lista; String cidades[] = {"Rio de Janeiro","São Paulo","Minas Gerais","Espírito Santo","Bahia","Pernambuco","Rio Grande do Sul","Acre"; JButton exibir; JLabel rotulo; public ExemploJComboBox2(){ super("exemplo de JComboBox"); setlayout(null); exibir = new JButton("Exibir"); rotulo = new JLabel(""); lista = new JComboBox(cidades); lista.seteditable(true); lista.setmaximumrowcount(5); lista.setbounds(50,50,150,30); exibir.setbounds(270,50,100,30); rotulo.setbounds(50,150,200,30); exibir.addactionlistener(new ActionListener(){ rotulo.settext("o estado é: "+lista.getselecteditem().tostring()); ); tela.add(lista); tela.add(exibir); tela.add(rotulo); setsize(400, 250); ExemploJComboBox2 app = new ExemploJComboBox2(); Agora o usuário será capaz de escolher um dos itens disponíveis ou digitar sua escolha. É comum em campos editáveis o pressionamento da tecla enter após a entrada da informação no campo. Desse forma, é importante efetuar uma chamada ao método addactionlistener da caixa de combinação e definir o procedimento a ser efetuado. O trecho do código seguinte mostra como exibir o valor que o usuário acaba de informar: exibir.addactionlistener( new ActionListener(){ rotulo.settext("o estado é: "+lista.getselecteditem().tostring()); AleksandraR.Cardozo...Página56 );

57 13. Entendimento e uso da classe JCheckBox A classe JCheckBox é usada quando precisamos de controles como caixas de seleção que podem ser marcados ou desmarcados pelo usuário e oferecem feedback visual de modo percebemos seu estado atual. O uso de caixas de seleção é freqüente em ambientes em que o usuário deve selecionar uma ou mais das opções oferecidas. O aplicativo seguinte apresenta uma janela com quatro caixas de seleção e um botão. Marque uma das opções e pressione o botão. Uma mensagem exibe o texto das caixas selecionadas. Veja a listagem: public class ExemploJCheckBox extends JFrame{ JCheckBox primeira,segunda,terceira,quarta,quinta; JLabel vazio; public ExemploJCheckBox(){ super("exemplo de um JCheckBox"); tela.setlayout(null); JLabel rotulo = new JLabel("Quais suas linguagens favoritas? "); rotulo.setbounds(40,30,200,20); primeira = new JCheckBox("Java"); primeira.setmnemonic(keyevent.vk_j); primeira.setbounds(40,60,60,20); segunda = new JCheckBox("C++"); segunda.setmnemonic(keyevent.vk_c); segunda.setbounds(100,60,60,20); terceira = new JCheckBox("Delphi"); terceira.setmnemonic(keyevent.vk_d); terceira.setbounds(160,60,60,20); quarta = new JCheckBox("Visual Basic"); quarta.setmnemonic(keyevent.vk_v); quarta.setbounds(230,60,100,20); quinta = new JCheckBox("Python"); quinta.setmnemonic(keyevent.vk_p); quinta.setbounds(335,60,70,20); JButton botao = new JButton("Exibir"); botao.setbounds(200,150,100,20); vazio = new JLabel(""); vazio.setbounds(100,200,600,20); botao.addactionlistener( new ActionListener(){ String escolhas = ""; if (primeira.isselected() ==true) escolhas = escolhas + primeira.gettext(); if (segunda.isselected() ==true) AleksandraR.Cardozo...Página57 escolhas = escolhas +" "+segunda.gettext(); if (terceira.isselected() ==true) escolhas = escolhas +" "+terceira.gettext(); if (quarta.isselected() ==true) escolhas = escolhas +" "+quarta.gettext();

58 if (quinta.isselected() ==true) escolhas = escolhas+" "+quinta.gettext(); vazio.settext("você escolheu: "+escolhas);); tela.add(rotulo); tela.add(primeira); tela.add(segunda); tela.add(terceira); tela.add(quarta); tela.add(quinta); tela.add(botao); tela.add(vazio); setsize(500,300); setlocationrelativeto(null); public static void main (String args[]){ ExemploJCheckBox app = new ExemploJCheckBox(); Durante a análise do código veremos como isso foi possível. Por ora, execute o aplicativo, selecione as opções desejadas e clique no botão. Veja se o resultado confere com sua escolha. O primeira passo para a construção deste exemplo foi declarar as referências global das instâncias da classe JCheckBox: JCheckBox primeira,segunda,terceira,quarta,quinta; Mais adiante você entenderá por que essa variável precisa ser global. Em seguida temos a criação de cinco caixas de seleção. Veja o código para a primeira: primeira = new JCheckBox("Java"); segunda = new JCheckBox("C++"); terceira = new JCheckBox("Delphi"); quarta = new JCheckBox("Visual Basic"); quinta = new JCheckBox("Python"); AleksandraR.Cardozo...Página58 Observe que a forma de criar objetos da classe JCheckBox é semelhante a criar objetos das classes JButton E JLabel.

59 Próximo passar atribuir às caixas de seleção suas teclas de atalho: primeira.setmnemonic(keyevent.vk_j); segunda.setmnemonic(keyevent.vk_c); terceira.setmnemonic(keyevent.vk_d); quarta.setmnemonic(keyevent.vk_v); quinta.setmnemonic(keyevent.vk_p); A tecla de atalho para o controle é definida com uma chamada ao método setmnemonic. Próximo passo posicionar as caixas de seleção no formulário, chamada ao método setbounds, já visto anteriormente: primeira.setbounds(40,60,60,20); segunda.setbounds(100,60,60,20); terceira.setbounds(160,60,60,20); quarta.setbounds(230,60,100,20); quinta.setbounds(335,60,70,20); Para adicionar as cinco caixas de seleção à janela, fizemos o uso de tela.add, já visto anteriormente: tela.add(primeira); tela.add(segunda); tela.add(terceira); tela.add(quarta); tela.add(quinta); O rótulo vazio e o botão de exibir já foram visto em exercícios anteriores. Quando você clicar no botão o conteúdo que você selecionou vai aparecer no rótulo vazio. Vamos entender agora o botão exibir: botao.addactionlistener( new ActionListener(){ String escolhas = ""; if (primeira.isselected() ==true) escolhas = escolhas + primeira.gettext(); if (segunda.isselected() ==true) escolhas = escolhas +" "+segunda.gettext(); if (terceira.isselected() ==true) escolhas = escolhas +" "+terceira.gettext(); if (quarta.isselected() ==true) escolhas = escolhas +" "+quarta.gettext(); if (quinta.isselected() ==true) escolhas = escolhas+" "+quinta.gettext(); vazio.settext("você escolheu: "+escolhas);); Na primeira linha desse método criamos uma variável chamada escolhas do tipo String e definimos se conteúdo inicial como vazio. Em seguida temos um laço IF, toda vez que você clicar no botão exibir ele fará a verificação e se a caixa de seleção for marcada o método isselected() testa o retorno se valor for AleksandraR.Cardozo...Página59 verdadeira, o aplicativo armazenará o conteúdo na variável escolhas. Toda vez que você marca uma caixa de seleção o método setselected() recebe o valor true (verdadeiro), e quando você desmarca a caixa de seleção o valor do método setselected(), recebe o valor de false (falso).

60 13.1 Iniciar um formulário com uma caixa de seleção marcada. public class ExemploJCheckBox2 extends JFrame{ JCheckBox primeira,segunda,terceira,quarta,quinta; public ExemploJCheckBox2(){ super("exemplo de um JCheckBox"); tela.setlayout(null); primeira = new JCheckBox("Java"); segunda = new JCheckBox("C++"); terceira = new JCheckBox("Delphi"); quarta = new JCheckBox("Visual Basic"); quinta = new JCheckBox("Python"); primeira.setmnemonic(keyevent.vk_j); segunda.setmnemonic(keyevent.vk_c); terceira.setmnemonic(keyevent.vk_d); quarta.setmnemonic(keyevent.vk_v); quinta.setmnemonic(keyevent.vk_p); primeira.setbounds(40,60,60,20); segunda.setbounds(100,60,60,20); terceira.setbounds(160,60,60,20); quarta.setbounds(230,60,100,20); quinta.setbounds(335,60,70,20); primeira.setselected(true); tela.add(primeira); tela.add(segunda); tela.add(terceira); tela.add(quarta); tela.add(quinta); setsize(500,300); setlocationrelativeto(null); public static void main (String args[]){ ExemploJCheckBox2 app = new ExemploJCheckBox2(); Utilize o método setselected(true) para a caixa de seleção desejada: primeira.setselected(true); AleksandraR.Cardozo...Página60

61 13.2 Alterando a cor da letra de um JCheckBox Exemplo disponível no aplicativo ExemploJCheckBox1 primeira.setforeground(color.blue); segunda.setforeground(color.red); terceira.setforeground(color.green); quarta.setforeground(color.yellow); quinta.setforeground(color.white); 14 Uso da Classe JRadioButton para criar botões de opção As caixas de seleção fornecem uma maneira conveniente de oferecer ao usuário alguns itens dos quais ele pode escolher um, vários ou todos. Existem, no entanto, situações em que apenas um dos itens pode ser selecionado. Para esses casos temos os botões de opção. Botões de opção têm seu uso justificado em casos em que apenas uma das opções pode ser selecionada. Essa funcionalidade só é atingida quando usamos objeto da classe ButtonGroup para agrupar os itens de modo, que sempre que um item dor selecionado, os demais sejam automaticamente desmarcados. O aplicativo seguinte apresenta uma janela com cinco botões de opção. Quando você clicar em exibir uma mensagem exibirá o valor selecionado e quando você clicar em outra opção a anterior será desmarcada. public class ExemploRadioButton extends JFrame{ JRadioButton primeira,segunda,terceira,quarta,quinta; JLabel rotulo,rotulo2; JButton exibir; ButtonGroup grupo; public ExemploRadioButton(){ super("exemplo de um JRadioButton"); tela.setlayout(null); rotulo = new JLabel("Escolha uma cidade: "); rotulo.setbounds(50,20,200,20); rotulo2 = new JLabel(""); rotulo2.setbounds(150,240,400,20); exibir = new JButton ("Exibir"); exibir.setbounds(200,200,120,20); primeira = new JRadioButton("Rio de Janeiro"); segunda = new JRadioButton("São Paulo"); terceira = new JRadioButton("Minas Gerais"); quarta = new JRadioButton("Amazonas"); quinta = new JRadioButton("Rio Grande do Sul"); AleksandraR.Cardozo...Página61 primeira.setbounds(50,50,120,20); segunda.setbounds(50,80,120,20); terceira.setbounds(50,110,120,20); quarta.setbounds(50,140,120,20); quinta.setbounds(50,170,200,20); primeira.setmnemonic(keyevent.vk_j);

62 segunda.setmnemonic(keyevent.vk_c); terceira.setmnemonic(keyevent.vk_d); quarta.setmnemonic(keyevent.vk_v); quinta.setmnemonic(keyevent.vk_p); public class ExemploRadioButton extends JFrame{ JRadioButton primeira,segunda,terceira,quarta,quinta; JLabel rotulo,rotulo2; JButton exibir; ButtonGroup grupo; grupo.add(primeira); grupo.add(segunda); grupo.add(terceira); grupo.add(quarta); grupo.add(quinta); exibir.addactionlistener( new ActionListener(){ if (primeira.isselected() ==true) rotulo2.settext("a cidade escolhida foi: "+primeira.gettext()); if (segunda.isselected() ==true) rotulo2.settext("a cidade escolhida foi: "+segunda.gettext()); if (terceira.isselected() ==true) rotulo2.settext("a cidade escolhida foi: "+terceira.gettext()); if (quarta.isselected() ==true) rotulo2.settext("a cidade escolhida foi: "+quarta.gettext()); if (quinta.isselected() ==true) rotulo2.settext("a cidade escolhida foi: "+quinta.gettext());); tela.add(rotulo); tela.add(primeira); tela.add(segunda); tela.add(terceira); tela.add(quarta); tela.add(quinta); tela.add(exibir); tela.add(rotulo2); setsize(500,300); setlocationrelativeto(null); public static void main (String args[]){ ExemploRadioButton app = new ExemploRadioButton(); AleksandraR.Cardozo...Página62

63 Explicando o aplicativo: Para o exemplo criamos os botões de seleção e definimos suas teclas de atalho. primeira.setmnemonic(keyevent.vk_j); segunda.setmnemonic(keyevent.vk_c); terceira.setmnemonic(keyevent.vk_d); quarta.setmnemonic(keyevent.vk_v); quinta.setmnemonic(keyevent.vk_p); Primeiro declaramos o grupo na área pública veja: public class ExemploRadioButton extends JFrame{ ButtonGroup grupo; Botões de opção são agrupados usando uma instância da classe ButtonGroup: ButtonGroup grupo; Para adicionar um botão ao grupo, basta efetuar uma chamada ao metodo add da classe ButtonGroup. Veja: grupo.add(primeira); grupo.add(segunda); grupo.add(terceira); grupo.add(quarta); grupo.add(quinta); É preciso, porém manter em mente que a classe ButtonGroup não é um contêiner para objetos. Essa classe serve apenas ao propósito de agrupar os botões para que somente um possa ser selecionado por uma vez. Se caso o usuário quiser colocar um botão padrão, aquele que já esteja marcado quando iniciar a janela use: primeiro.setselected(true); Método: setselected(true) marca o botão setselected(false) desmarca o botão Método: AleksandraR.Cardozo...Página63 isselected(true) verifica se o botão esta marcado isselected(false) verifica se o botão esta desmarcado

64 15 Fazendo um aplicativo com ComboBox CheckBox RadioButton public class ExemploComboCheckRadio extends JFrame{ JLabel rotulo1, rotulo2, rotulo3,texto; JCheckBox negrito,italico,normal,negritoitalico; JRadioButton tam1,tam2,tam3,tam4; ButtonGroup grupo; String cor[] = {"Sem Cor", "Vermelho", "Azul", "Verde","Amarelo","Branco","Preto"; JComboBox lista; Integer estilo, tamfonte; public ExemploComboCheckRadio(){ super("exemplo Combo Check Radio BOX"); setlayout(null); rotulo1 = new JLabel("Cor"); rotulo2 = new JLabel("Estilo"); rotulo3 = new JLabel("Tamanho"); texto = new JLabel("Programa feito em Java"); lista = new JComboBox(cor); lista.setmaximumrowcount(7); negrito = new JCheckBox("Negrito"); italico = new JCheckBox("Italico"); normal = new JCheckBox("Normal"); negritoitalico = new JCheckBox("Negrito Itálico"); tam1 = new JRadioButton("12"); tam2 = new JRadioButton("14"); tam3 = new JRadioButton("16"); tam4 = new JRadioButton("18"); grupo = new ButtonGroup(); grupo.add(tam1); grupo.add(tam2); grupo.add(tam3); grupo.add(tam4); rotulo1.setbounds(40,20,70,20); rotulo2.setbounds(200,20,70,20); rotulo3.setbounds(300,20,70,20); texto.setbounds(100,200,300,20); lista.setbounds(40,50,150,20); negrito.setbounds(200,50,100,20); italico.setbounds(200,70,100,20); normal.setbounds(200,90,100,20); negritoitalico.setbounds(200,110,150,20); AleksandraR.Cardozo...Página64 tam1.setbounds(350,50,100,20); tam2.setbounds(350,70,100,20); tam3.setbounds(350,90,100,20); tam4.setbounds(350,110,100,20);

65 tamfonte=12; estilo=font.plain; //coloca cor na fonte lista.addactionlistener( new ActionListener(){ if (lista.getselecteditem().tostring() == "Sem Cor") texto.setforeground(color.black); if (lista.getselecteditem().tostring() == "Vermelho") texto.setforeground(color.red); if (lista.getselecteditem().tostring() == "Azul") texto.setforeground(color.blue); if (lista.getselecteditem().tostring() == "Verde") texto.setforeground(color.green); if (lista.getselecteditem().tostring() == "Amarelo") texto.setforeground(color.yellow); if (lista.getselecteditem().tostring() == "Branco") texto.setforeground(color.white); if (lista.getselecteditem().tostring() == "Preto") texto.setforeground(color.black);); //coloca a fonte tamnho 12 tam1.addactionlistener(new ActionListener(){ tamfonte=12; texto.setfont(new Font("",estilo,tamfonte));); //coloca a fonte tamnho 14 tam2.addactionlistener(new ActionListener(){ tamfonte=14; texto.setfont(new Font("",estilo,tamfonte));); //coloca a fonte tamnho 16 tam3.addactionlistener( new ActionListener(){ tamfonte=16; texto.setfont(new Font("",estilo,tamfonte));); //coloca a fonte tamnho 18 tam4.addactionlistener( new ActionListener(){ tamfonte=18; texto.setfont(new Font("",estilo,tamfonte));); //coloca a fonte em negrito negrito.addactionlistener( new ActionListener(){ estilo=font.bold; normal.setselected(false); italico.setselected(false); negritoitalico.setselected(false); AleksandraR.Cardozo...Página65 texto.setfont(new Font("",estilo,tamfonte));); //coloca a fonte em italico italico.addactionlistener( new ActionListener(){

66 estilo=font.italic; normal.setselected(false); negrito.setselected(false); negritoitalico.setselected(false); texto.setfont(new Font("",estilo,tamfonte));); //coloca a fonte normal normal.addactionlistener( new ActionListener(){ estilo=font.plain; negrito.setselected(false); italico.setselected(false); negritoitalico.setselected(false); texto.setfont(new Font("",estilo,tamfonte));); //coloca a fonte em negrito e italico negritoitalico.addactionlistener( new ActionListener(){ estilo=font.bold+font.italic; negrito.setselected(false); italico.setselected(false); normal.setselected(false); texto.setfont(new Font("",estilo,tamfonte));); tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3); tela.add(texto); tela.add(negrito); tela.add(italico); tela.add(normal); tela.add(negritoitalico); tela.add(tam1); tela.add(tam2); tela.add(tam3);tela.add(tam4); tela.add(lista); setsize(500,300); setlocationrelativeto(null); ExemploComboCheckRadio app = new ExemploComboCheckRadio(); AleksandraR.Cardozo...Página66 Aplicativo sendo executado.

67 Vamos estudar o aplicativo: 1º Passo: declarar as variáveis e os tipos JLabel rotulo1, rotulo2, rotulo3,texto; JCheckBox negrito,italico,normal,negritoitalico; JRadioButton tam1,tam2,tam3,tam4; ButtonGroup grupo; String cor[] = {"Sem Cor", "Vermelho", Azul", "Verde"," Amarelo"," Branco"," Preto"; JComboBox lista; Integer estilo, tamfonte; 2º Passo: definir o conteúdo que serão exibidos na tela Rótulos rotulo1 = new JLabel("Cor"); rotulo2 = new JLabel("Estilo"); rotulo3 = new JLabel("Tamanho"); texto = new JLabel("Programa feito em Java"); ComboBox: lista = new JComboBox(cor); Quantidade de linha no ComboBox: lista.setmaximumrowcount(7); Estilo da fonte negrito = new JCheckBox("Negrito"); italico = new JCheckBox("Itálico"); normal = new JCheckBox("Normal"); negritoitalico = new JCheckBox("Negrito Itálico"); Tamanho da Fonte: tam1 = new JRadioButton("12"); tam2 = new JRadioButton("14"); tam3 = new JRadioButton("16"); tam4 = new JRadioButton("18"); 3º Passo: adicionar o RadioButton em um grupo para que somente um seja selecionado grupo = new ButtonGroup(); grupo.add(tam1); grupo.add(tam2); grupo.add(tam3); grupo.add(tam4); 4º Passo: definir o posicionamento das opções rotulo1.setbounds(40,20,70,20); rotulo2.setbounds(200,20,70,20); rotulo3.setbounds(300,20,70,20); texto.setbounds(100,200,300,20); lista.setbounds(40,50,150,20); negrito.setbounds(200,50,100,20); italico.setbounds(200,70,100,20); normal.setbounds(200,90,100,20); negritoitalico.setbounds(200,110,150,20); tam1.setbounds(350,50,100,20);tam2.setbounds(350,70,100,20); tam3.setbounds(350,90,100,20);tam4.setbounds(350,110,100,20); AleksandraR.Cardozo...Página67 Todos os passos acima já foram visto em outros aplicativos. 5º Passo: atribuir valor as variáveis que vai guardar o tamanho e o estilo da fonte. tamfonte=12; estilo=font.plain;

68 6º Passo: Funcionalidade do ComboBox seleciona a cor da fonte lista.addactionlistener( new ActionListener(){ if (lista.getselecteditem().tostring() == "Sem Cor") texto.setforeground(color.black); if (lista.getselecteditem().tostring() == "Vermelho") texto.setforeground(color.red); if (lista.getselecteditem().tostring() == "Azul") texto.setforeground(color.blue); if (lista.getselecteditem().tostring() == "Verde") texto.setforeground(color.green); if (lista.getselecteditem().tostring() == "Amarelo") texto.setforeground(color.yellow); if (lista.getselecteditem().tostring() == "Branco") texto.setforeground(color.white); if (lista.getselecteditem().tostring() == "Preto") texto.setforeground(color.black);); É feita a comparação com o comando IF, se o conteúdo da string do ComboBox for igual a cor que você escolheu, então setforeground coloca a cor escolhida no rótulo texto. 7º Passo: Trocar o tamanho da fonte tam1.addactionlistener(new ActionListener(){ tamfonte=12; texto.setfont(new Font("",estilo,tamfonte));); tam2.addactionlistener(new ActionListener(){ tamfonte=14; texto.setfont(new Font("",estilo,tamfonte));); tam3.addactionlistener( new ActionListener(){ tamfonte=16; texto.setfont(new Font("",estilo,tamfonte));); tam4.addactionlistener( new ActionListener(){ tamfonte=18; texto.setfont(new Font("",estilo,tamfonte));); Quando você clicar no tamanho desejado, a variável tamfonte recebe o tamanho escolhido, e modifica o tamanho do rótulo texto, o valor da variável tamfonte só será modificado se você alterar e escolher outro tamanho, por isso a variável tamfonte é declarada pública uma vez colocado valor nela, todos os métodos que tiver utilizando essa variável faz referência ao valor dela. 8º Passo: Escolher o estilo da fonte Coloca a fonte em negrito negrito.addactionlistener( new ActionListener(){ estilo=font.bold; AleksandraR.Cardozo...Página68 normal.setselected(false); italico.setselected(false); negritoitalico.setselected(false); texto.setfont(new Font("",estilo,tamfonte)););

69 Quando você selecionar o CheckBox do negrito, ele atribui o estilo negrito (BOLD) a variável estilo, desmaca o CheckBox do normal, itálico e do negrito itálico, e exibir na tela o rótulo texto com a fonte negrito. Coloca a fonte em itálico italico.addactionlistener( new ActionListener(){ estilo=font.italic; normal.setselected(false); negrito.setselected(false); negritoitalico.setselected(false); texto.setfont(new Font("",estilo,tamfonte));); Quando você selecionar o CheckBox do itálico, ele atribui o estilo itálico (ITALIC) a variável estilo, desmaca o CheckBox do normal, negrito e do negrito itálico, e exibir na tela o rótulo texto com a fonte em itálico. Coloca a fonte normal normal.addactionlistener( new ActionListener(){ estilo=font.plain; negrito.setselected(false); italico.setselected(false); negritoitalico.setselected(false); texto.setfont(new Font("",estilo,tamfonte));); Quando você selecionar o CheckBox do normal, ele atribui o estilo normal (PLAIN) a variável estilo, desmaca o CheckBox do negrito, itálico e do negrito itálico, e exibir na tela o rótulo texto com a fonte com estilo normal sem efeito. Coloca a fonte em negrito e itálico negritoitalico.addactionlistener( new ActionListener(){ estilo=font.bold+font.italic; negrito.setselected(false); italico.setselected(false); normal.setselected(false); texto.setfont(new Font("",estilo,tamfonte));); Quando você selecionar o CheckBox do negrito itálico, ele atribui o estilo negrito e itálico (Font.BOLD+Font.ITALIC) a variável estilo, desmaca o CheckBox do negrito, itálico e do normal, e exibir na tela o rótulo texto com a fonte com estilo negrito e itálico. A variável estilo é pública por isso quando você atribui valor nela, todos os métodos que for utilizá-la exibirá no rótulo o estilo da variável estilo. 9º Passo: utiliza o método tela.add() para adicionar os métodos ao aplicativo. tela.add(rotulo1); tela.add(rotulo2); tela.add(rotulo3); tela.add(texto); tela.add(negrito); tela.add(italico); AleksandraR.Cardozo...Página69 tela.add(normal); tela.add(negritoitalico); tela.add(tam1); tela.add(tam2); tela.add(tam3);tela.add(tam4); tela.add(lista);

70 16 Como adicionar dica aos seus botões O processo de adicionar dicas aos botões é sempre uma boa idéia definir as dicas de ferramentas para que o usuário, ao posicionar o ponteiro do mouse sobre o controle (Botão), possa ter mais informações sobre a funcionalidade das ferramentas do aplicativo. Veja na listagem abaixo: public class ExemploBotoesDicas extends JFrame{ JButton botao1,botao2; public ExemploBotoesDicas(){ super("exemplo de Botões com Dica"); tela.setlayout(null); botao1 = new JButton("Olá"); botao2 = new JButton("Sair"); botao1.setbounds(100,50,100,20); botao2.setbounds(100,100,100,20); botao1.settooltiptext("botão usado para abrir algo"); botao2.settooltiptext("botão que será usado para sair"); tela.add(botao1); tela.add(botao2); setsize(300,200); setlocationrelativeto(null); ExemploBotoesDicas app = new ExemploBotoesDicas(); A dica de ferramenta para os botões foi definida nas linhas: botao1.settooltiptext("botão usado para abrir algo"); botao2.settooltiptext("botão que será usado para sair"); AleksandraR.Cardozo...Página70

71 16.1 Adicionar cores diferentes as dicas Se você observou atentamente a dica de ferramenta do exemplo anterior, deve ter percebido que o Java define o azul como cor de fundo e o texto na cor preta. É possível acessar e manipular algumas das propriedades das dicas de ferramenta de modo a adequá-las às cores propostas em seus aplicativos. É uma técnica raramente usada, mas que surte efeitos bem interessantes. As dicas de ferramenta do Windows tem o amarelo como cor de fundo. Veja como é possível atingir esse efeito em um aplicativo Java: public class ExemploBotoesDicas2 extends JFrame{ JButton botao1,botao2; public ExemploBotoesDicas2(){ super("exemplo de Botões com Dica"); tela.setlayout(null); botao1 = new JButton("Olá"); botao2 = new JButton("Sair"); botao1.setbounds(100,50,100,20); botao2.setbounds(100,100,100,20); botao1.settooltiptext("botão usado para abrir algo"); botao2.settooltiptext("botão que será usado para sair"); UIManager.put("ToolTip.background",SystemColor.info); tela.add(botao1); tela.add(botao2); setsize(300,200); setlocationrelativeto(null); ExemploBotoesDicas2 app = new ExemploBotoesDicas2(); AleksandraR.Cardozo...Página71 E para alterar a cor da letra da dica, basta você digitar: UIManager.put("ToolTip.foreground",Color.blue);

72 17 Tipos de diálogos fornecidos pela classe JOptionPane Vamos usar constantemente a classe JOptionPane para exibir caixas de mensagens mostrando resultados de operações. Nestes tópicos vamos estudar os diferentes tipos de diálogos, assim como seus construtores mais importantes. Os diálogos de mensagens fornecidos pela classe JOptionPane são do tipo modal, ou seja, quando o diálogo é exibido, tudo que estiver sendo executado no aplicativo é suspenso até que a janela do diálogo seja fechada. Isso é importante, uma vez que dependemos da resposta do usuário para continuar o processamento normal do programa. Os diálogos da classe JOptionPane podem ser exibidos com chamadas aos seguintes métodos estáticos: Método showconfirmdialog showinputdialog showmessagedialog Uso Usado para pedir confirmação, ou seja, o usuário tem a opção de responder sim, não ou cancelar. Usado para obter entrada para o programa. Usado para exibir mensagem sobre a execução de alguma operação Como entender os diálogos de confirmação Diálogos de confirmação são usados para perguntar ao usuário se uma determinada operação deve ser iniciada, continuada ou interrompida. Aplicativos em Java geralmente usam esse tipo de diálogo para confirmar a gravação de arquivos, fechamento de janelas, etc. Exemplo: JOptionPane.showConfirmDialog(null, Fechar?, Fechar,JOptionPane.YES_NO_OPTION); Este método retorna um valor inteiro correspondente à opção escolhida pelo usuário. Em diálogos de confirmação esse retorno pode ser um dos três valores seguintes: YES_OPTION indica que o usuário escolheu a opção Yes ou Sim. NO_OPTION indica que o usuário escolheu a opção No ou Não. AleksandraR.Cardozo...Página72 CANCEL_OPTION indica que o usuário escolheu a opção Cancel ou Cancelar.

73 Os parâmetros para o método são: JOptionPane.showConfirmDialog(parentComponent, message, title,optiontype); parentcomponent determina a janela na qual o diálogo será exibido. Geralmente forncemos o valor null para esse parâmetro. message o texto a ser exibido no diálogo. title o texto para a barra de título do diálogo. optiontype valor inteiro equivalente às opções disponíveis para o tipo de diálogo, ou seja, YES_NO_OPTION, ou YES_NO_CANCEL_OPTION. A listagem abaixo mostra como os diálogos de confirmação podem ser usados. O Aplicativo pergunta se o usuário deseja realmente fechar a janela, caso você clique no yes a janela será fecada, caso contrário o janela não será fechada. public class ExemploBotaoSair1 extends JFrame{ JButton botao; public ExemploBotaoSair1(){ super("exemplo de Botões com Diálogos de confirmação"); tela.setlayout(null); botao = new JButton("Sair"); botao.setbounds(100,50,100,20); botao.settooltiptext("botão que finaliza a janela"); tela.add(botao); botao.addactionlistener( new ActionListener(){ public void actionperformed(actionevent e) { int opcao; opção=joptionpane.showconfirmdialog(null, "Deseja mesmo fechar a janela?", "Fechar",JOptionPane.YES_NO_OPTION); if (opcao==joptionpane.yes_option) System.exit(0); ); setsize(300,200); setlocationrelativeto(null); AleksandraR.Cardozo...Página73 ExemploBotaoSair1 app = new ExemploBotaoSair1();

74 Execute o aplicativo clique no botão sair e veja a mensagem do programa: Se você clicar em Yes a janela será fechada e caso contrário ela continuará. Passos para colocar o botão a janela e dicas de botões já foram vistos anteriomente, e para chamar o caixa de confirmação basta você clicar no sair, e o evento será executado, método para chamar o evento também já foi visto. Veja o que tem de diferente: botao.addactionlistener( new ActionListener(){ public void actionperformed(actionevent e) { int opcao; opcao=joptionpane.showconfirmdialog(null,"deseja mesmo fechar a janela?","fechar", JOptionPane.YES_NO_OPTION); if (opcao==joptionpane.yes_option) System.exit(0); ); Foi declarada uma variável do tipo inteira com o nome de opção. Essa variável vai receber a resposta do JOptionPane, e vai armazenar o valor que será escolhido na caixa de confirmação. E o comando IF, que vai fazer a comparação se o conteúdo da variável opção for igual JOptionPane.YES_OPTION, ele retorna a verdadeiro e chama o método System.exite(0) e finaliza a janela Traduzir os botões de diálogos Seria interessante exibir os textos dos botões em português? A classe JOptionPane fornece um método chamado showoptiondialog que permite personalizar o texto dos botões de diálogos. Não tem muita diferença entre o showconfirmdialog e showoptiondialog. Vejamos a listagem: public class ExemploTraduzir extends JFrame{ JButton botao; public ExemploTraduzir(){ super("exemplo de Botões Traduzidos"); tela.setlayout(null); AleksandraR.Cardozo...Página74 botao = new JButton("Sair"); botao.setbounds(100,50,100,20); botao.settooltiptext("botão que finaliza a janela"); tela.add(botao); botao.addactionlistener(new ActionListener(){

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

76 17.3 Como obter dados por meio de diálogos do tipo prompt Diálogos do tipo prompt são usados quando precisamos recebe entrada de dados, geralmente fornecidos pelo usuário do aplicativo. A forma mais básica de um diálogo do tipo prompt é obtida pelo método showinputdialog com a seguinte sintaxe: showinputdialog(mensagem); Quando o usuário digita o conteúdo solicitado e pressiona o botão OK, o conteúdo da caixa é atribuído a variável nome. E o conteúdo dessa variável será escrito dentro de um rótulo na janela. Se o botão cancel for acionado acontecerá um erro no aplicativo. Como você pode perceber boa parte da caixa de diálogo esta em inglês. Infelizmente não é possível traduzir esse diálogo sem nos aventuramos em criar uma classe personalizada. Veja a listagem: public class ExemploInputDialog extends JFrame{ JButton botao; String nome; JLabel rotulo; public ExemploInputDialog(){ super("exemplo de Input Dialog"); tela.setlayout(null); nome = JOptionPane.showInputDialog("Entre com seu nome: "); rotulo = new JLabel(""); botao = new JButton("Sair"); rotulo.setbounds(10,40,350,20); botao.setbounds(100,90,100,20); botao.settooltiptext("botão que finaliza a janela"); rotulo.settext("o nome digitado foi: "+nome.touppercase()); tela.add(rotulo); tela.add(botao); botao.addactionlistener(new ActionListener(){ int opcao; Object[] botoes = {"Sim","Não"; opcao = JOptionPane.showOptionDialog(null,"Deseja mesmo fechar a janela?","fechar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,botoes,botoes[0]); if (opcao==joptionpane.yes_option) System.exit(0); ); setsize(300,200); setlocationrelativeto(null); public AleksandraR.Cardozo...Página76 static void main(string args[]){ ExemploInputDialog app = new ExemploInputDialog();

77 Caixa do InputDialog Quando você clicar no Ok. Veja o resultado, o nome vai aparecer todo em maiúsculo 17.4 Como fornecer os valores a serem selecionados em um diálogo O uso de diálogos prompt para obter entrada do usuário é muito conveniete, mas há situações em que o usuário deve apenas selecionar um dos valores fornecidos pelo aplicativo. Para essas situações você pode usar o seguinte método da classe JOptionPane. Veja a lista: Import javax.swing.joptionpane; public class ExemploInputDialog1{ Object linguagens [] = {"Java","Delphi","C++","Visual Basic"; Object opcao = JOptionPane.showInputDialog(null,"Qual sua linguagem favorita?","enquete", JOptionPane.QUESTION_MESSAGE, null,linguagens,linguagens[0]); JOptionPane.showMessageDialog(null,"Você escolheu: "+opcao); System.exit(0); AleksandraR.Cardozo...Página77

78 17.5 Entendimento e uso do método showmessagedialog. Como o leitor já conhece todos os parâmetros, nos determinamos apenas no parâmetro messatype. É aqui que definimos o tipo de mensagem que será exibido. Os valores possíveis são: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, PLAIN_MESSAGE. Cada um desses valores produz uma mensagem diferente, como mostra o seguinte aplicativo: public class ExemploDeMessagens extends JFrame{ JButton erro, informacao, exclamacao, pergunta, nenhum; public ExemploDeMessagens(){ super("exemplo de mensagens"); tela.setlayout(null); erro = new JButton("Erro"); informacao = new JButton("Informação"); exclamacao = new JButton("Exclamação"); pergunta = new JButton("Pergunta"); nenhum = new JButton("Nenhum"); erro.setbounds(30,20,100,20); informacao.setbounds(30,50,100,20); exclamacao.setbounds(30,80,150,20); pergunta.setbounds(30,110,100,20); nenhum.setbounds(30,140,100,20); tela.add(erro); tela.add(informacao); tela.add(exclamacao); tela.add(pergunta); tela.add(nenhum); erro.addactionlistener(new ActionListener(){ JOptionPane.showMessageDialog(null,"Você escolheu erro","mensagem de Erro",JOptionPane.ERROR_MESSAGE,null);) informacao.addactionlistener(new ActionListener(){ JOptionPane.showMessageDialog(null,"Você escolheu informação","mensagem de Informação",JOptionPane.INFORMATION_MESSAGE,null);); exclamacao.addactionlistener(new ActionListener(){ JOptionPane.showMessageDialog(null,"Você escolheu exclamação","mensagem de Exclamação",JOptionPane.WARNING_MESSAGE,null);); pergunta.addactionlistener(new ActionListener(){ JOptionPane.showMessageDialog(null,"Você escolheu pergunta","mensagem de Pergunta",JOptionPane.QUESTION_MESSAGE,null);); nenhum.addactionlistener(new ActionListener(){ JOptionPane.showMessageDialog(null,"Você escolheu nenhum","mensagem",joptionpane.plain_message,null);); setsize(300,200); setlocationrelativeto(null); public AleksandraR.Cardozo...Página78 static void main(string args[]){ ExemploDeMessagens app = new ExemploDeMessagens();

79 Tela inicial do aplicativo Quando você clicar no botão a mensagem correspondente vai aparecer. Veja um trecho de código que produz a segunda mensagem: JOptionPane.showMessageDialog(null,"Você escolheu pergunta","mensagem de Pergunta",JOptionPane.QUESTION_MESSAGE,null);); AleksandraR.Cardozo...Página79

80 18 Maiúsculas e Minúsculas Nada como você entrar com os dados em minúsculos e obter sua saída em maiúsculos, ou vice versa. Para colocar a saída em maiúsculo utilize o método: touppercase(). Observe o aplicativo abaixo: public class ExemploMaiusculas extends JFrame{ JButton copiar,limpar; JLabel rotulo1,rotulo2; JTextField texto1,texto2; public ExemploMaiusculas(){ super("exemplo de saídas maiúsculas"); tela.setlayout(null); rotulo1 = new JLabel("Nome: "); rotulo2 = new JLabel("Nome: "); texto1 = new JTextField(20); texto2 = new JTextField(20); copiar = new JButton("Copiar"); limpar = new JButton("Limpar"); rotulo1.setbounds(20,30,50,20); rotulo2.setbounds(20,60,50,20); texto1.setbounds(60,30,180,20); texto2.setbounds(60,60,180,20); copiar.setbounds(20,130,100,20); limpar.setbounds(180,130,100,20); copiar.addactionlistener(new ActionListener(){ texto2.settext(texto1.gettext().touppercase());); limpar.addactionlistener(new ActionListener(){ texto1.settext(""); texto2.settext(""); texto1.requestfocus();); tela.add(rotulo1); tela.add(rotulo2); tela.add(texto1); tela.add(texto2); tela.add(copiar); tela.add(limpar); setsize(300,200); setlocationrelativeto(null); ExemploMaiusculas app = new ExemploMaiusculas(); AleksandraR.Cardozo...Página80

81 public class ExemploMinusculas extends JFrame{ JButton copiar,limpar; JLabel rotulo1,rotulo2; JTextField texto1,texto2; public ExemploMinusculas(){ super("exemplo de saídas minúsculas"); tela.setlayout(null); rotulo1 = new JLabel("Nome: "); rotulo2 = new JLabel("Nome: "); texto1 = new JTextField(20); texto2 = new JTextField(20); copiar = new JButton("Copiar"); limpar = new JButton("Limpar"); rotulo1.setbounds(20,30,50,20); rotulo2.setbounds(20,60,50,20); texto1.setbounds(60,30,180,20); texto2.setbounds(60,60,180,20); copiar.setbounds(20,130,100,20); limpar.setbounds(180,130,100,20); copiar.addactionlistener(new ActionListener(){ String texto; texto = texto1.gettext().touppercase(); texto1.settext(texto); texto2.settext(texto1.gettext().tolowercase());); limpar.addactionlistener(new ActionListener(){ texto1.settext(""); texto2.settext(""); texto1.requestfocus();); tela.add(rotulo1); tela.add(rotulo2); tela.add(texto1); tela.add(texto2); tela.add(copiar); tela.add(limpar); setsize(300,200); setlocationrelativeto(null); ExemploMinusculas app = new ExemploMinusculas(); Para colocar em minúsculos, basta você chamar o método tolowercase(), se você digitar a letra minúscula, quando você clicar em copiar, o texto da primeira caixa vai ficar maiúsculas e a segunda fica minúsculas. E o botão limpar serve para limpar as duas caixas e coloca o foco para a primeira caixa. AleksandraR.Cardozo...Página81

82 19 Adicionando Data nos seus aplicativos O aplicativo abaixo mostra dos tipos de data, somente com números e a outra com o dia da semana e os meses escritos com o nome. Vamos ver o aplicativo: import java.util.*; public class Data extends JFrame{ JLabel rotulo,rotulo2; int ds,dia,mes,ano; Calendar data; String diasemana[]={"domingo","segunda - Feira","Terça - Feira","Quarta - Feira", "Quinta - Feira","Sexta - Feira","Sábado"; String meses[]={"janeiro","fevereiro","março","abril","maio","junho", "Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"; public Data(){ super("exemplo de Data"); tela.setlayout(null); rotulo = new JLabel(""); rotulo2 = new JLabel(""); rotulo.setbounds(20,30,280,20); rotulo2.setbounds(20,60,280,20); data = Calendar.getInstance(); ds = data.get(calendar.day_of_week); dia = data.get(calendar.day_of_month); mes = data.get(calendar.month); ano = data.get(calendar.year); rotulo.settext("data: "+ds+" "+dia+"/"+(mes+1)+"/"+ano); rotulo2.settext("data: "+diasemana[ds-1]+", "+dia+" de "+meses[mes]+" de "+ano); tela.add(rotulo); tela.add(rotulo2); setsize(300, 200); setlocationrelativeto(null); Data app = new Data(); AleksandraR.Cardozo...Página82

83 20 Adicionando Horas ao seu aplicativo import java.util.*; import java.text.decimalformat; import javax.swing.timer; public class Hora extends JFrame{ JLabel rotulo; int hh,mm,ss,h; Calendar hora; DecimalFormat formato; public Hora(){ super("exemplo de Hora"); tela.setlayout(null); rotulo = new JLabel(""); rotulo.setbounds(20,30,280,20); ActionListener tarefa = (new ActionListener(){ HORAS(); ); javax.swing.timer time = new javax.swing.timer(1000,tarefa); time.start(); tela.add(rotulo); setsize(300, 200); setlocationrelativeto(null); Hora app = new Hora(); private void HORAS(){ hora = Calendar.getInstance(); hh = hora.get(calendar.hour_of_day); mm = hora.get(calendar.minute); ss = hora.get(calendar.second); formato = new DecimalFormat("00"); rotulo.settext("hora: "+formatar(hh%12)+":"+formatar(mm)+":"+formatar(ss)); private String formatar(int num){ formato = new DecimalFormat("00"); return formato.format(num); AleksandraR.Cardozo...Página83

84 Vamos criar uma classe privada com o nome de HORAS vamos definir os parâmetros para hora, minutos e segundos. Depois criar um outra classe privada com o nome de formatar para que você possa formatar a hora com dois dígitos, e coloca a hora no rótulo com uma string. Criar uma ação com o nome de tarefa, que vai chamar a classe privada HORAS. Por último chamar a biblioteca com o nome de Timer, e atribuir o tempo de um segundo que é representado por mil. E chamar o método time.start(), para que o relógio possa movimentar os segundos. Aplicativo bem interessante execute veja como funciona. 21 Entendimento da classe JTextArea A classe JTextField permite a criação de caixas de textos que aceitam a entrada de apenas uma linha de texto. A classe JTextArea permite a entrada e manipulação de múltiplas linhas de texto. Emobra a classe JTextArea forneça uma série de métodos úteis para a manipulação de seu conteúdo, algumas operações mais avançadas, tais como formatar e aplicar estilos diversos ao texto de controle, são possíveis apenas com o uso da classes JTextPane e JeditorPane. Esta apostila não aborda estas duas classes mas, você poderá pesquisa-las na documentação Java. A classe JTextArea fornece seis construtores. Dentre eles, o mais comumente usado é aquele que cria uma área de texto em branco com um determinado número de linhas e colunas. Veja a sintaxe para esse construtor: AleksandraR.Cardozo...Página84 JTextArea(int linhas, int colunas).

85 A listagem seguinte apresenta um aplicativo que contém um rótulo, uma área de texto. Somente para o usuário visualizar como funciona o aplicativo: public class ExemploJTextArea extends JFrame{ JLabel rotulo; JTextArea texto; public ExemploJTextArea(){ super("exemplo com JTextArea"); tela.setlayout(null); rotulo = new JLabel ("Endereço"); texto = new JTextArea(20,30); rotulo.setbounds(50,20,100,20); texto.setbounds(50,50,250,250); tela.add(rotulo); tela.add(texto); setsize(400, 350); setlocationrelativeto(null); ExemploJTextArea app = new ExemploJTextArea(); Este aplicativo apresenta poucas novidades. Começamos definindo uma variável chamada texto que servirá para instanciarmos a área de texto: JTextArea texto; A área de texto é criada com a seguinte instrução: texto = new JTextArea(20,30); Nosso controle vai exibir 20 linhas de texto e 30 colunas. É importante observar que esses valores definem apenas o conteúdo que será visível no controle e não a quantidade de texto que poderá ser inserida. AleksandraR.Cardozo...Página85

86 21.1 Definição das barras de rolagem para os controles JTextArea O aplicativo que digitamos no tópico anterior apresentou o uso da classe JTextArea para construir áreas de texto que aceitem mais de uma linha de conteúdo. O leitor deve ter percebido que, se a quantidade de texto exceder o espaço reservado para o controle, parte de seu conteúdo não poderá ser visualizado devido à ausência das barras de rolagens. A listagem seguinte é uma pequena modificação do exemplo anterior que demostra como a classe JScrollPane pode ser usada para adicionar barras de rolagem a objetos da classe JTextArea: public class ExemploJTextArea3 extends JFrame{ JLabel rotulo; JTextArea texto; JScrollPane painelrolagem; JPanel painel; public ExemploJTextArea3(){ super("exemplo com JTextField"); tela.setlayout(null); rotulo = new JLabel ("Endereço"); rotulo.setbounds(50,20,100,20); texto = new JTextArea(10,20); painelrolagem = new JScrollPane(texto); painelrolagem.setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_always); painelrolagem.sethorizontalscrollbarpolicy(jscrollpane.horizontal_scrollbar_always); painel = new JPanel(); painel.add(painelrolagem); painel.setbounds(40,40,250,250); tela.add(rotulo); tela.add(painel); setsize(300, 280); setlocationrelativeto(null); ExemploJTextArea3 app = new ExemploJTextArea3(); AleksandraR.Cardozo...Página86

87 Como este aplicativo é bem semelhante ao do tópico anterior, vamos nos concentrar apenas nos trechos de códigos relevantes à adição das barras de rolagem. Definindo as variáveis: JLabel rotulo; JTextArea texto; JScrollPane painelrolagem; JPanel painel; A área de texto é criada com a seguinte linha: texto = new JTextArea(10,20); Veja que criamos uma instância da classe JTextArea da forma usual. Em seguida a linha: painelrolagem = new JScrollPane(texto); Cria uma instância da classe JScrollPane fornecendo a referência texto como argumento. É importante observar que, ao usar esse construtor, as dimesões do painel de rolagem serão definidas de modo acomodar a área de texto criada previamente. Por padrão, as barras de rolagem definidas com o construtor anterior serão exibidas somente quando o conteúdo da área de texto exceder sua capacidade de exibição. Neste exemplo optamos por sempre mostrar as barras de rolagem. Isso foi conseguido com as duas instruções seguintes: painelrolagem.setverticalscrollbarpolicy(jscrollpane.vertical_scrol LBAR_ALWAYS); painelrolagem.sethorizontalscrollbarpolicy(jscrollpane.horizontal_s CROLLBAR_ALWAYS); O aparecimento ou não das barras de rolagem vertical e horizontal é controlado pelos métodos setverticalscrollbarpolicy e sethorizontalscrollbarpolicy. Esses dois métodos aceitam os valores de constantes na classe JScrollPane. Para que seus aplicativos sigam os padrões predefinidos, use as constantes que exibirão as barras de rolagem somente quando forem necessárias. Neste aplicativo fizemos uso da classe JPanel para inclui as barras de rolagem. Com isso temos mais controle sobre a disposição dos componentes que estamos usando. Ela se destaca apenas um truque que usamos para definir o espaçamento de todos os controles corretamente. painel = new JPanel(); Para finalizar a análise, é adicionado no painel as barras de rolagem (painelderolagem), pois as barras de rolagem quando estavam sendo instanciadas pelo JScrollPane, recebeu o a área de texto (texto). painel.add(painelrolagem); AleksandraR.Cardozo...Página87 posiciona o painel na janela: painel.setbounds(40,40,250,250); Adiciona o painel na janela: tela.add(painel);

88 A tabela seguinte relaciona essas constantes e descreve seus uso: Constante HORIZONTAL_SCROLL_AS_NEEDED HORIZONTAL_SCROLL_NEVER HORIZONTAL_SCROLL_ALWAYS VERTICAL_SCROLL_AS_NEEDED VERTICAL _SCROLL_NEVER VERTICAL_SCROLL_ALWAYS Uso Exibe a barra de rolagem horizontal somente quando for necessário. A barra de rolagem horizontal nunca é exibida. Define que a barra de rolagem horizontal deve ser exibida sempre. Exibe a barra de rolagem vertical somente quando for necessário. A barra de rolagem vertical nunca é exibida. Define que a barra de rolagem vertical deve ser exibida sempre Controlando a quebra automática de linhas Por padrão, controles criados como instância da classe JTextArea não oferecem a funcionalidade de quebra automática de linhas. Isso é incoveniente em algumas situações em que o usuário digita longos trechos de texto no componente. Imagine algo em torno de 50 a 100 palavras sendo exibidas em apenas uma linha. Nada elegante. É possível forçar a quebra de linha automática nos objetos JTextArea com uma chamada ao método setlinewrap. Este método aceita os argumentos true ou false. Você tem que usar juntamente com o setlinewrap o método setwrapstyleword para que haja a quebra de linha acontença entre palavras, se a próxima palavra não couber na linha atual, deve ser deslocada para a próxima linha. Este método aceita os argumentos true ou false. Veja a sintaxe: texto.setlinewrap(true); texto.setwrapstyleword(true); Aplicativo disponível com o nome de ExemploJTextArea2.java 21.3 Cor da fonte, Cor de fundo Nada como alterar a cor da fonte do JTextArea, argumento igual ao JTextField texto.setforeground(color.blue); texto.setbackground(color.yellow); 21.4 Tipo, estilo e tamanho de fonte Nada como alterar a cor de fundo do JTextArea, argumento igual ao JTextField: AleksandraR.Cardozo...Página88 texto.setfont(new Font("Comic Sans MS",Font.BOLD+Font.ITALIC,20)); Exemplo disponível com o nome de ExemploJTextArea4.java

89 22 Adicionando menus a um aplicativo Java Menus são uma parte integrante de qualquer aplicativo de interface gráfica. Seu uso ajuda a agrupar o acesso as funcionalidades do programa em lugares já conhecidos pelo usuário e evita a poluição desnecessárias de componentes na tela do aplicativo. Menus são criados como objetos das classes JMenurBar, JMenu, JMenuitem, JCheckBoxMenuItem e JRadioButtonMenuItem. Todas essas classes têm sua relevância e uma aplicação de cada um será apresentada em seguida. Por ora, saiba que o menu pode ser adicionados apenas aos objetos de classes que fornecem o método JMenuBar. A classe JMenuBar serve para criar a barra de menus. Já o JMenu adiciona os itens do menu.já os itens dos menus são colocados com JMenuItem. O Aplicativo seguinte apresenta uma barra de menus, que contém o menu opções, com os itens limpar, fonte e sair: public class ExemploDeMenu extends JFrame{ JMenuBar barra; JMenu opcoes; JMenuItem limpar,fonte,sair; public ExemploDeMenu(){ super("exemplo de Menus"); tela.setlayout(null); barra = new JMenuBar(); setjmenubar(barra); opcoes = new JMenu("Opções"); barra.add(opcoes); limpar = new JMenuItem("Limpar"); fonte = new JMenuItem("Fonte"); sair = new JMenuItem("Sair"); limpar.setmnemonic(keyevent.vk_l); fonte.setmnemonic(keyevent.vk_f); sair.setmnemonic(keyevent.vk_s); opcoes.add(limpar); opcoes.add(fonte); opcoes.addseparator(); opcoes.add(sair); setsize(500,300); setlocationrelativeto(null); public static void main (String args[]){ AleksandraR.Cardozo...Página89 ExemploDeMenu app = new ExemploDeMenu();

90 Vamos analisar as partes mais importantes deste código: Declarar na área pública a variável que vai receber a barra de menu: JMenuBar barra; Criar a barra de menus: barra = new JMenuBar(); Anexam a barra de menus à janela com uma chamada ao método setjmenubar da classe JFrame (janela): setjmenubar(barra); Uma janela pode ter apenas uma barra de menus, disposta horizontalmente na parte superior da janela. O menu Opções é criado com a seguinte instrução: opcoes = new JMenu("Opções"); Depois é anexado a barra de menus: barra.add(opcoes); Observe o o uso do método setmnemonic para definir as teclas de atalho para o menu e todos os itens do menu. limpar.setmnemonic(keyevent.vk_l); fonte.setmnemonic(keyevent.vk_f); sair.setmnemonic(keyevent.vk_s); Agora é a hora de criar os itens do menu opções: limpar = new JMenuItem("Limpar"); fonte = new JMenuItem("Fonte"); sair = new JMenuItem("Sair"); Lembrando de declarar as variáveis que irão receber os itens do menu como JMenuItem: JMenuItem limpar,fonte,sair; Agora vamos anexar os itens no menu opções: opcoes.add(limpar); opcoes.add(fonte); opcoes.addseparator(); Adiciona um linha separadora no menu opcoes.add(sair); AleksandraR.Cardozo...Página90 Exemplo do aplicativo acima sendo execurado

91 22.1 Como adicionar submenus a um item do menu Sbmenus podem ser adicionados a um determinado item de menu para tornar o agrupamento lógico ainda mais eficiente. Essa técnica consiste em adicionar um JMenu a outro JMenu. Veja um exemplo de como isso pode ser feito: public class ExemploDeMenu2 extends JFrame{ JMenuBar barra; JMenu opcoes,fonte,cor; JMenuItem limpar,sair,estilo,tamanho,azul,verde,vermelho,amarelo,preto; public ExemploDeMenu2(){ super("exemplo de Menus com submenus"); tela.setlayout(null); barra = new JMenuBar(); setjmenubar(barra); opcoes = new JMenu("Opções"); barra.add(opcoes); limpar = new JMenuItem("Limpar"); fonte = new JMenu("Fonte"); cor = new JMenu("Cor"); azul = new JMenuItem("Azul"); verde = new JMenuItem("Verde"); vermelho = new JMenuItem("Vermelho"); amarelo = new JMenuItem("Amarelo"); preto = new JMenuItem("Preto"); estilo = new JMenuItem("Estilo"); tamanho = new JMenuItem("Tamanho"); sair = new JMenuItem("Sair"); limpar.setmnemonic(keyevent.vk_l); fonte.setmnemonic(keyevent.vk_f); sair.setmnemonic(keyevent.vk_s); cor.setmnemonic(keyevent.vk_c); estilo.setmnemonic(keyevent.vk_e); tamanho.setmnemonic(keyevent.vk_t); opcoes.add(limpar); opcoes.add(fonte); opcoes.addseparator(); opcoes.add(sair); fonte.add(cor); fonte.add(estilo); fonte.add(tamanho); cor.add(azul); cor.add(verde); cor.add(vermelho); cor.add(amarelo); cor.add(preto); setsize(500,300); setlocationrelativeto(null); AleksandraR.Cardozo...Página91 public static void main (String args[]){ ExemploDeMenu2 app = new ExemploDeMenu2();

92 Vamos analisar o aplicativo: As variáveis que no aplicativo anterior foram declaradas como JMenuItem, para que possam ser anexado a submenus elas terão que mudar de classe e passar a ser da classe JMenu. Veja: JMenu opcoes,fonte,cor; Observe como o item Fonte do menu Opções tem uma seta para a direita, indicando que tem nesse item três submenus, Cor, Estilo e Tamanho. O item Cor também possui uma seta para direita, indicando que nesse item possui, cinco subitens. Agora vamos criar o item fonte e cor como JMenu, e os itens azul, verde, vermelho, amarelo e preto serão criados como JMenuItem, vai indicar que o JMenuItem é um item do JMenu do item Cor. fonte = new JMenu("Fonte"); cor = new JMenu("Cor"); azul = new JMenuItem("Azul"); verde = new JMenuItem("Verde"); vermelho = new JMenuItem("Vermelho"); amarelo = new JMenuItem("Amarelo"); preto = new JMenuItem("Preto"); estilo = new JMenuItem("Estilo"); tamanho = new JMenuItem("Tamanho"); Agora vamos anexar os itens cor, estilo e tamanho no item fonte: fonte.add(cor); fonte.add(estilo); fonte.add(tamanho); E finalmente anexar as cores dentro do item cor: cor.add(azul); cor.add(verde); cor.add(vermelho); cor.add(amarelo); cor.add(preto); AleksandraR.Cardozo...Página92

93 22.2 Como usar caixa de seleção como itens do menu JCheckBoxMenuItem Neste tópico vamos mostrar a técnica que usa as caixas de seleção nos itens do menu. A vantagem de usar caixas de seleção como itens de menu é que você pode marcar e desmarcar itens sem a exigência de que no mínimo um dos itens esteja selecionado. Caixas de seleção como itens do menu são criadas como instâncias da classe JCheckBoxMenuItem. As propriedades, métodos e eventos dessa classe são semelhantes aos da classe JCheckBox, de modo que você não terá nenhuma dificuldade em usá-la em seus aplicativos. A listagem seguinte mostra como podemos criar as caixas de seleção, onde todas podem ser selecionadas: public class ExemploDeMenu3 extends JFrame{ JMenuBar barra; JMenu opcoes,fonte,estilo,cor; JMenuItem limpar,sair,tamanho,azul,verde,vermelho,amarelo,preto; JCheckBoxMenuItem normal, negrito, italico, negritoitalico; public ExemploDeMenu3(){ super("exemplo de Menus com JChekBoxMenuItem"); tela.setlayout(null); barra = new JMenuBar(); setjmenubar(barra); opcoes = new JMenu("Opções"); barra.add(opcoes); limpar = new JMenuItem("Limpar"); fonte = new JMenu("Fonte"); cor = new JMenu("Cor"); azul = new JMenuItem("Azul"); verde = new JMenuItem("Verde"); vermelho = new JMenuItem("Vermelho"); amarelo = new JMenuItem("Amarelo"); preto = new JMenuItem("Preto"); estilo = new JMenu("Estilo"); tamanho = new JMenuItem("Tamanho"); normal = new JCheckBoxMenuItem("Normal"); negrito = new JCheckBoxMenuItem("Negrito"); italico = new JCheckBoxMenuItem("Itálico"); negritoitalico = new JCheckBoxMenuItem("Negrito e Itálico"); sair = new JMenuItem("Sair"); opcoes.setmnemonic(keyevent.vk_o); limpar.setmnemonic(keyevent.vk_l); fonte.setmnemonic(keyevent.vk_f); sair.setmnemonic(keyevent.vk_s); cor.setmnemonic(keyevent.vk_c); estilo.setmnemonic(keyevent.vk_e); normal.setmnemonic(keyevent.vk_m); negrito.setmnemonic(keyevent.vk_n); AleksandraR.Cardozo...Página93 italico.setmnemonic(keyevent.vk_i); negritoitalico.setmnemonic(keyevent.vk_c); tamanho.setmnemonic(keyevent.vk_t); opcoes.add(limpar); opcoes.add(fonte); opcoes.addseparator();

94 opcoes.add(sair); cor.add(azul); cor.add(verde); cor.add(vermelho); cor.add(amarelo); cor.add(preto); estilo.add(normal); estilo.add(negrito); estilo.add(italico); estilo.add(negritoitalico); fonte.add(cor); fonte.add(estilo); fonte.add(tamanho); setsize(500,300); setlocationrelativeto(null); public static void main (String args[]){ ExemploDeMenu3 app = new ExemploDeMenu3(); Vamos analisar o aplicativo: Declarar as variáveis que vão receber as caixas de seleção: JCheckBoxMenuItem normal, negrito, italico, negritoitalico; Anexar os estilos as caixas de seleção: normal = new JCheckBoxMenuItem("Normal"); negrito = new JCheckBoxMenuItem("Negrito"); italico = new JCheckBoxMenuItem("Itálico"); negritoitalico = new JCheckBoxMenuItem("Negrito e Itálico"); Definir as teclas de atalho: normal.setmnemonic(keyevent.vk_m); negrito.setmnemonic(keyevent.vk_n); italico.setmnemonic(keyevent.vk_i); negritoitalico.setmnemonic(keyevent.vk_c); Anexar os estilos ao item estilo do menu fontes: estilo.add(normal); estilo.add(negrito); estilo.add(italico); estilo.add(negritoitalico); AleksandraR.Cardozo...Página94

95 22.3 Usando botões de seleção como item do menu JRadioButtonMenuItem Botões de seleção pode ser adicionados a um menu como instância da classe JRadioButtonMenuItem. Usamos tais controles quando queremos que apenas um item entre dois ou mais itens possam ser selecionados. Um bom exemplo é quando queremos fornecer um menu que permite escolhe o tamanho da fonte que será aplicada a um determinado componente. O aplicativo seguinte contém o Menu Opções, com o item Fonte e o submenu Tamanho, onde você pode escolher o tamanho desejado para sua fonte. Lembrando que somente um tamanho pode ser escolhido, e a mesma coisa foi definida para as caixas de seleção (JRadioButtonMenuItem), somente um estilo poderá ser definido: public class ExemploDeMenu4 extends JFrame{ JMenuBar barra; JMenu opcoes,fonte,cor,estilo,tamanho; JMenuItem limpar,sair,azul,verde,vermelho,amarelo,preto; JCheckBoxMenuItem nomee[]; ButtonGroup grupot,grupoe; JRadioButtonMenuItem tamanhof[]; String tam[] = {"12","14","16","18"; String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"; public ExemploDeMenu4(){ super("exemplo de Menus com JRadioButtonMenuItem"); tela.setlayout(null); barra = new JMenuBar(); setjmenubar(barra); opcoes = new JMenu("Opções"); barra.add(opcoes); limpar = new JMenuItem("Limpar"); fonte = new JMenu("Fonte"); cor = new JMenu("Cor"); azul = new JMenuItem("Azul"); verde = new JMenuItem("Verde"); vermelho = new JMenuItem("Vermelho"); amarelo = new JMenuItem("Amarelo"); preto = new JMenuItem("Preto"); estilo = new JMenu("Estilo"); grupoe = new ButtonGroup(); nomee = new JCheckBoxMenuItem[4]; for(int i = 0; i < 4; i++){ nomee[i] = new JCheckBoxMenuItem(est[i]); estilo.add(nomee[i]); grupoe.add(nomee[i]); AleksandraR.Cardozo...Página95 tamanho = new JMenu("Tamanho"); grupot = new ButtonGroup(); tamanhof = new JRadioButtonMenuItem[4]; for(int i = 0; i < 4; i++){ tamanhof[i] = new JRadioButtonMenuItem(tam[i]);

96 tamanho.add(tamanhof[i]); grupot.add(tamanhof[i]); sair = new JMenuItem("Sair"); opcoes.setmnemonic(keyevent.vk_o); limpar.setmnemonic(keyevent.vk_l); fonte.setmnemonic(keyevent.vk_f); sair.setmnemonic(keyevent.vk_s); cor.setmnemonic(keyevent.vk_c); estilo.setmnemonic(keyevent.vk_e); tamanho.setmnemonic(keyevent.vk_t); opcoes.add(limpar); opcoes.add(fonte); opcoes.addseparator(); opcoes.add(sair); cor.add(azul); cor.add(verde); cor.add(vermelho); cor.add(amarelo); cor.add(preto); fonte.add(cor); fonte.add(estilo); fonte.add(tamanho); setsize(500,300); setlocationrelativeto(null); public static void main (String args[]){ ExemploDeMenu4 app = new ExemploDeMenu4(); AleksandraR.Cardozo...Página96 Neste aplicativo existem algumas coisas diferentes, os itens do menu estilo desse aplicativo foi alterado, e tem algumas modificações do anterior veja:

97 1º Passo: Para este exemplo vamos usar dois vetores, veja as declarações: JCheckBoxMenuItem nomee[]; JRadioButtonMenuItem tamanhof[]; Um vetor é para a caixa de seleção (JCheckBoxMenuItem), que recebe o nome de nomee, e a letra E é para representar estilo. Esse vetor serve para definirmos os itens do submenu Cor. O outro vetor é para o botão de seleção (JRadioButtonMenuItem ), que recebe o nome de nomef, e letra F é para representar fonte. Esse vetor serve para definirmos os itens do submenu Estilo. 2º Passo: Agora declaramos duas instânciasda classe ButtonGroup: ButtonGroup grupot,grupoe; Atribuimos os nomes grupot, pertece ao tamanho da fonte, e o grupoe, que pertence ao estilo da fonte. Esse ButtonGroup agrupa as opções dos onde você só poderá escolher um item de cada submenu. 3º Passo: Criamos dois vetores do tipo String que servirão para definimos os valores dos itens do menu. String tam[] = {"12","14","16","18"; String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"; O primeiro para tamanho da fonte e o segundo para o estilo. 4º Passo: Criar os submenus: O submenu tamanho é criado com a seguinte instrução: tamanho = new JMenu("Tamanho"); O submenu estilo é criado com a seguinte instrução: estilo = new JMenu("Estilo"); AleksandraR.Cardozo...Página97

98 5ª Passo: Em seguinda inicializamos as referências dos grupos: grupoe = new ButtonGroup(); grupot = new ButtonGroup(); 6ª Passo: Atribuir a quantidade de itens a caixa de seleção: nomee = new JCheckBoxMenuItem[4]; Atribuir a quantidade de itens ao botão de seleção: tamanhof = new JRadioButtonMenuItem[4]; 7º Passo: Para instanciar os itens do menu Cor, usamos o seguinte laço for: for(int i = 0; i < 4; i++){ nomee[i] = new JCheckBoxMenuItem(est[i]); estilo.add(nomee[i]); grupoe.add(nomee[i]); Esse laço é executado uma vez para cada um dos valores contidos no vetor est que no nosso caso são quatro estilo (normal, negrito, itálico, negrito e itálico). A cada interação atribuímos ao item de menu atual um dos valores do vetor est, adicionamos o item ao menu Estilo e também ao grupo de botões grupoe. Lembrando que o primeiro índice do vetor é 0, o segundo é 1, o terceiro é 2 e o quarto é 3, por isso usamos no for i < 4, quando for satisfeita a condição o for é encerrado e o menu recebe os estilos. for(int i = 0; i < 4; i++){ tamanhof[i] = new JRadioButtonMenuItem(tam[i]); tamanho.add(tamanhof[i]); grupot.add(tamanhof[i]); Esse laço é executado uma vez para cada um dos valores contidos no vetor tam que no nosso caso são quatro estilo (12, 14, 16, 18). A cada interação atribuímos ao item de menu atual um dos valores do vetor tam, adicionamos o item ao menu Tamanho e também ao grupo de botões grupot. Lembrando que o primeiro índice do vetor é 0, o segundo é 1, o terceiro é 2 e o quarto é 3, por isso usamos no for i < 4, quando for satisfeita a condição o for é encerrado e o menu recebe os tamanhos. AleksandraR.Cardozo...Página98 OBS: Quando usamos vetores para criar itens de menus não podemos adicionar teclas de atalho.

99 22.4 Menu executando ações Quando um determinado item é selecionado, o código do aplicativo deve detectar a seleção e efetuar as ações determinadas. Esse procedimento é fácil. Uma vez que a classe JMenuItem herda abstração de botões e fornece o método addactionlistener. No aplicativos adicionamos ao exemplo um componente JTextArea, para usar as opções dos menus Limpar, Cor, Estilo e Tamanho. Use o menu Limpar para apagar todo o conteúdo do JTextArea. Use a caixa de seleção para definir os estilos da fonte do JTextArea. Os estilos possíveis são: normal, negrito, itálico, negrito e itálico. E utilize o botão de seleção para obter o tamanho da fonte do JTextArea. Os tamanhos possíveis são: 12, 14, 16 e 18. public class ExemploDeMenu5 extends JFrame{ JMenuBar barra; JMenu opcoes,fonte,cor,estilo,tamanho; JMenuItem limpar,sair,azul,verde,vermelho,amarelo,preto; JCheckBoxMenuItem nomee[]; ButtonGroup grupot,grupoe; JRadioButtonMenuItem tamanhof[]; String tam[] = {"12","14","16","18"; String est[] = {"Normal", "Negrito", "Itálico", "Negrito e Itálico"; JTextArea texto; JPanel painel; JScrollPane rolagem; int estilofonte, tamfonte; public ExemploDeMenu5(){ super("exemplo de Menus executando ações"); tela.setlayout(null); estilofonte=font.plain; tamfonte=12; barra = new JMenuBar(); setjmenubar(barra); opcoes = new JMenu("Opções"); barra.add(opcoes); limpar = new JMenuItem("Limpar"); fonte = new JMenu("Fonte"); cor = new JMenu("Cor"); azul = new JMenuItem("Azul"); verde = new JMenuItem("Verde"); vermelho = new JMenuItem("Vermelho"); amarelo = new JMenuItem("Amarelo"); preto = new JMenuItem("Preto"); TratadorE tratestilo = new TratadorE(); estilo = new JMenu("Estilo"); grupoe = new ButtonGroup(); nomee = new JCheckBoxMenuItem[4]; for(int i = 0; i < 4; i++){ AleksandraR.Cardozo...Página99 nomee[i] = new JCheckBoxMenuItem(est[i]); estilo.add(nomee[i]); grupoe.add(nomee[i]); nomee[i].additemlistener(tratestilo); TratadorT trattamanho = new TratadorT(); tamanho = new JMenu("Tamanho");

100 grupot = new ButtonGroup(); tamanhof = new JRadioButtonMenuItem[4]; for(int i = 0; i < 4; i++){ tamanhof[i] = new JRadioButtonMenuItem(tam[i]); tamanho.add(tamanhof[i]); grupot.add(tamanhof[i]); tamanhof[i].additemlistener(trattamanho); sair = new JMenuItem("Sair"); opcoes.setmnemonic(keyevent.vk_o); limpar.setmnemonic(keyevent.vk_l); fonte.setmnemonic(keyevent.vk_f); sair.setmnemonic(keyevent.vk_s); cor.setmnemonic(keyevent.vk_c); estilo.setmnemonic(keyevent.vk_e); tamanho.setmnemonic(keyevent.vk_t); opcoes.add(limpar); opcoes.add(fonte); opcoes.addseparator(); opcoes.add(sair); cor.add(azul); cor.add(verde); cor.add(vermelho); cor.add(amarelo); cor.add(preto); fonte.add(cor); fonte.add(estilo); fonte.add(tamanho); texto = new JTextArea(10,20); rolagem = new JScrollPane(texto); rolagem.setverticalscrollbarpolicy(jscrollpane.vertical_ SCROLLBAR_ALWAYS); rolagem.sethorizontalscrollbarpolicy(jscrollpane.horizontal_ SCROLLBAR_ALWAYS); painel = new JPanel(); painel.add(rolagem); painel.setbounds(30,30,250,250); tela.add(painel); limpar.addactionlistener(new ActionListener(){ texto.settext(""); texto.requestfocus();); azul.addactionlistener(new ActionListener(){ texto.setforeground(color.blue); repaint();); verde.addactionlistener(new ActionListener(){ texto.setforeground(color.green); repaint();); vermelho.addactionlistener(new ActionListener(){ texto.setforeground(color.red); repaint();); amarelo.addactionlistener(new ActionListener(){ AleksandraR.Cardozo...Página100 texto.setforeground(color.yellow); repaint();); preto.addactionlistener(new ActionListener(){ texto.setforeground(color.black);

101 repaint();); sair.addactionlistener(new ActionListener(){ int resposta; resposta=joptionpane.showconfirmdialog(null,"deseja realmente sair?","mensagem do Programa",JOptionPane.YES_NO_OPTION); if (resposta==6) System.exit(0);); setsize(500,300); setlocationrelativeto(null); public static void main (String args[]){ ExemploDeMenu5 app = new ExemploDeMenu5(); private class TratadorE implements ItemListener{ public void itemstatechanged(itemevent e){ if(nomee[0].isselected()) estilofonte= Font.PLAIN; if(nomee[1].isselected()) estilofonte= Font.BOLD; if(nomee[2].isselected()) estilofonte= Font.ITALIC; if(nomee[3].isselected()) estilofonte= Font.BOLD+Font.ITALIC; texto.setfont(new Font("", estilofonte, tamfonte)); repaint(); private class TratadorT implements ItemListener{ public void itemstatechanged(itemevent e){ if(tamanhof[0].isselected()) tamfonte= 12; if(tamanhof[1].isselected()) tamfonte= 14; if(tamanhof[2].isselected()) tamfonte= 16; if(tamanhof[3].isselected()) tamfonte= 18; texto.setfont(new Font("", estilofonte, tamfonte)); repaint(); AleksandraR.Cardozo...Página101

102 Menu Limpar: limpar.addactionlistener(new ActionListener(){ texto.settext(""); texto.requestfocus();); Quando este item for executado, o componente JTextArea será limpo e receberá o foco. Menu Sair: sair.addactionlistener(new ActionListener(){ int resposta; resposta=joptionpane.showconfirmdialog(null,"deseja realmente sair?","mensagem do Programa",JOptionPane.YES_NO_OPTION); if (resposta==6) System.exit(0);); Quando este item de menu for selecionado, uma mensagem perguntando se o usuário deseja fechar o aplicativo será exibida, caso o usuário escolha sim o aplicativo será fechado. É claro que aqui usamos uma classe anônima. Onde declaramos uma variável inteira chamada resposta, e atribuímos ela ao JOptionPane que vai exibir uma mensagem na tela, quando o usuário escolher a opção, a variável resposta recebe esse valor, e depois é executado o laço IF, se o conteúdo da variável resposta for igual a 6 então o IF, chama o método System.exit(0), e finaliza o aplicativo. Menu Fonte -> Estilo: Agora vamos usar uma classe privada que implementa a interface ActionListener e tratar todos os itens de menu Estilo e Tamanho de uma só vez. private class TratadorE implements ItemListener{ public void itemstatechanged(itemevent e){ if(nomee[0].isselected()) estilofonte= Font.PLAIN; if(nomee[1].isselected()) estilofonte= Font.BOLD; if(nomee[2].isselected()) estilofonte= Font.ITALIC; if(nomee[3].isselected()) estilofonte= Font.BOLD+Font.ITALIC; AleksandraR.Cardozo...Página102 texto.setfont(new Font("", estilofonte, tamfonte)); repaint();

103 Menu Fonte -> Tamanho private class TratadorT implements ItemListener{ public void itemstatechanged(itemevent e){ if(tamanhof[0].isselected()) tamfonte= 12; if(tamanhof[1].isselected()) tamfonte= 14; if(tamanhof[2].isselected()) tamfonte= 16; if(tamanhof[3].isselected()) tamfonte= 18; texto.setfont(new Font("", estilofonte, tamfonte)); repaint(); Menu Fonte -> Cor -> Amarelo Quando o item correspondente a cor for selecionado e executado o componente JTextArea, receberá a cor escolhida amarelo.addactionlistener(new ActionListener(){ texto.setforeground(color.yellow); repaint();); vermelho.addactionlistener(new ActionListener(){ texto.setforeground(color.red); repaint();); Declarar a variável que vai receber o conteúdo da classe privada: Variavel trattamanho recebe a referência da classe privada TratadorT. Variavel tratestilo recebe a referência da classe privada TratadorE. TratadorT trattamanho = new TratadorT(); TratadorE tratestilo = new TratadorE(); Chama a variável que esta fazendo referência a classe privada que vai executar a ação do menu: tamanhof[i].additemlistener(trattamanho); nomee[i].additemlistener(tratestilo); OBS: O método repaint(), sempre é chamando nas classes, ele serve para atualizar AleksandraR.Cardozo...Página103 o estilo, fonte ou a cor escolhida.

104 23 Criando um menu de contexto Classe JPopupMenu Menus de contexto ou menu popup têm a mesma funcionalidade dos menus convecionais. A única diferença é que menus de contexto são exibidos quando clicamos com o botão direito no componente para o qual o menu foi definido. Para ver um exemplo de menu com contexto, abra seu editor de texto favorito e clique com o botão direito sobre a área de edição de texto. As chances de um menu de contexto ser exibido são enormes. Em Java menus de contexto são criados como objetos da classe JPopupMenu. Os itens do menu são criados a partir da classe JMenuItem, de modo que você pode usar todas as técnicas que vimos nos tópicos anteriores. O aplicativo seguinte cria um menu de contexto para uma área de texto e oferece as opções de recortar, copiar e colar. Veja a listagem para o exemplo: mport javax.swing.*; public class ExemploDePopupMenu extends JFrame{ JPopupMenu opcoes; JMenuItem recortar,copiar,colar; JTextArea texto; public ExemploDePopupMenu(){ super("exemplo de PopupMenu"); tela.setlayout(null); texto = new JTextArea(10,20); texto.setbounds(30,30,250,250); texto.addmouselistener(new MouseAdapter(){ public void mousereleased(mouseevent e) { if(e.ispopuptrigger()) opcoes.show(e.getcomponent(),e.getx(),e.gety()); ); Tratador tratmenu = new Tratador(); opcoes = new JPopupMenu(); recortar = new JMenuItem("Recortar"); copiar = new JMenuItem("Copiar"); colar = new JMenuItem("Colar"); recortar.setmnemonic(keyevent.vk_r); copiar.setmnemonic(keyevent.vk_c); colar.setmnemonic(keyevent.vk_l); recortar.addactionlistener(tratmenu); copiar.addactionlistener(tratmenu); colar.addactionlistener(tratmenu); opcoes.add(recortar); opcoes.add(copiar); opcoes.addseparator(); opcoes.add(colar); tela.add(texto); setsize(320,340); setlocationrelativeto(null); AleksandraR.Cardozo...Página104 public static void main (String args[]){ ExemploDePopupMenu app = new ExemploDePopupMenu();

105 private class Tratador implements ActionListener{ if(e.getsource()==recortar) texto.cut(); if(e.getsource()==copiar) texto.copy(); if(e.getsource()==colar) texto.paste(); repaint(); Quando você executar esse aplicativo, clique com o botão direito na área de texto e o menu de contexto será exibido. Escolha um dos itens do menu e veja o resultado obtido. O menu de contexto usado para este exemplo é criado na linha: opcoes = new JPopupMenu(); Para exibi-lo, criamos uma classe anônima MouseAdapter e a fornecemos como argumento para o método addmouselistener da área de texto: texto.addmouselistener(new MouseAdapter(){ public void mousereleased(mouseevent e) { if(e.ispopuptrigger()) opcoes.show(e.getcomponent(),e.getx(),e.gety()); ); Quando clicamos com o botão direito na área de texto e o método mousereleased é disparado, efetuamos uma chamada ao método ispopuptrigger da classe MouseEvent. Esse método retorna verdadeio se o evento foi disparado com o botão direito do mouse. Satisfeita a condição, o menu de contexto é exibido. Observe os parâmetros para o método show da classe JPopupMenu: show(componet invoker, int x, int y); opcoes.show(e.getcomponent(),e.getx(),e.gety()); ); O parâmetro invoker é o componente para o qual o menu de contexto esta definido. Os parâmetros x e y são as coordenadas do mouse no momento em que o menu de contexto é chamado. AleksandraR.Cardozo...Página105

106 24 Uso da classe JToolBar para criar barra de ferramentas Uma barra de ferramentas é um contêiner para agrupar botões e outros controles usados com maior freqüência no aplicativo. Grande parte dos aplicativos atuais apresenta barras de ferramentas, de modo que você deve analisar e verificar a necessidade de implementar essa funcionalidade em seus programas. Barras de ferramentas em aplicativos Java são criadas como objetos da classe JToolBar. Essa classe oferece algumas funcionalidades bem interessantes, entre elas a capacidade de ser arrastada pela janela do aplicativo (e até fora deste). O aplicativo seguinte mostra como incluir uma barra de ferramentas semelhantes às encontradas em muitos programas atuais. No momento os botões não fornecem nenhuma funcionalidade, mas você será capaz de arrastar a barra para qualquer um dos cantos da janela e, para sua surpresa, arrastá-la para fora do aplicativo. Veja a listagem para o exemplo: public class ExemploBarraDeFerramentas extends JFrame{ JToolBar barra; JButton direita,esquerda,centralizar,recortar,copiar,colar; ImageIcon imagens[]; public ExemploBarraDeFerramentas(){ super("exemplo de Barra de Ferramentas"); tela.setlayout(null); String icones[]={"imagens/direita.gif","imagens/esquerda.gif", "imagens/centro.gif","imagens/recortar.gif", "imagens/copiar.gif","imagens/colar.gif"; imagens = new ImageIcon[6]; for(int i = 0;i < 6;i++){ imagens[i] = new ImageIcon(icones[i]); direita = new JButton(imagens[0]); esquerda = new JButton(imagens[1]); centralizar = new JButton(imagens[2]); recortar = new JButton(imagens[3]); copiar = new JButton(imagens[4]); colar = new JButton(imagens[5]); direita.settooltiptext("direita (Ctrl+d)"); esquerda.settooltiptext("esquerda (Ctrl+e)"); centralizar.settooltiptext("centralizar (Ctrl+z)"); recortar.settooltiptext("recortar (Ctrl+x)"); copiar.settooltiptext("copiar (Ctrl+c)"); colar.settooltiptext("colar (Ctrl+v)"); barra = new JToolBar("Barra de Ferramentas"); UIManager.put("ToolTip.background",SystemColor.info); UIManager.put("ToolTip.foreground",Color.blue); AleksandraR.Cardozo...Página106 barra.setrollover(true); barra.add(direita); barra.add(esquerda); barra.add(centralizar); barra.addseparator();

107 barra.add(recortar); barra.add(copiar); barra.add(colar); barra.setbounds(1,1,260,50); tela.add(barra); setsize(320,340); setlocationrelativeto(null); public static void main (String args[]){ ExemploBarraDeFerramentas app = new ExemploBarraDeFerramentas(); Para que este exemplo ficasse bem realista, adicionamos uma barra de menus. Experimente arrastar a barra de ferramentas. Declarar o vetor que vai receber as imagens: ImageIcon imagens[]; Para definir as imagens dos botões da barra de ferramentas, usamos o seguinte vetor de objetos com seis posições da classe ImageIcon: imagens = new ImageIcon[6]; O nome e o caminho das imagens são definidos como itens do vetor ícones: String icones[]={"imagens/direita.gif","imagens/esquerda.gif", "imagens/centro.gif","imagens/recortar.gif", "imagens/copiar.gif","imagens/colar.gif"; O próximo passo é instanciar os objetos da classe ImageIcon com as imagens AleksandraR.Cardozo...Página107 do vetor ícones. Isso é feito no laço seguinte: for(int i = 0;i < 6;i++){ imagens[i] = new ImageIcon(icones[i]);

108 São criados seis botões com imagens veja seguintes instruções: direita = new JButton(imagens[0]); esquerda = new JButton(imagens[1]); centralizar = new JButton(imagens[2]); recortar = new JButton(imagens[3]); copiar = new JButton(imagens[4]); colar = new JButton(imagens[5]); Próximo passo adicionar dicas aos botões da barra de ferramentas: direita.settooltiptext("direita (Ctrl+d)"); esquerda.settooltiptext("esquerda (Ctrl+e)"); centralizar.settooltiptext("centralizar (Ctrl+z)"); recortar.settooltiptext("recortar (Ctrl+x)"); copiar.settooltiptext("copiar (Ctrl+c)"); colar.settooltiptext("colar (Ctrl+v)"); A barra de ferramentas é criada na linha: barra = new JToolBar("Barra de Ferramentas"); Trocar a cor de fundo da dica dos botões da barra de ferramentas: UIManager.put("ToolTip.background",SystemColor.info); Trocar a cor da letra da dica dos botões da barra de ferramentas: UIManager.put("ToolTip.foreground",Color.blue); Os botões são adicionados à barra de ferramentas pelo método add: barra.add(direita); barra.add(esquerda); barra.add(centralizar); barra.addseparator(); barra.add(recortar); barra.add(copiar); barra.add(colar); Aplicar o efeito Rollover aos botões da barra de ferramentas: O efeito Rollover modifica algum aspecto do controle quando movemos o ponteiro sobre ele. Geralmente esse efeito aplica cores e imagens diferentes. Em barras de ferramentas a técnica mais comum é aplicar uma borda diferenciada quando o ponteiro adentra ou sai da área do componente. Java permite aplicar esse efeito a barras de ferramentas por meio de uma chamada ao método setrollover da classe JToolBar. Veja como isso pode ser feito: barra.setrollover(true); Posicionar a barra de ferramentas na janela: barra.setbounds(1,1,260,50); AleksandraR.Cardozo...Página108 Adicionar a barra de ferramentas na janela: tela.add(barra);

109 25 Como criar janelas secundárias com o uso da classe JDialog Janelas secundárias são modais ou não-modais que dependem da janela principal do aplicativo. Por meio dessas janelas podemos efetuar novas operações acessando até mesmo os componentes da janela principal. Janelas secundárias são criadas como instâncias da classe JDialog, e fornece praticamente todas as funcionalidades da classe JFrame. Isso quer dizer que podemos obter o painel de conteúdo de um objeto dessa classe e incluir componentes, interagir com o usuário, enviando dados para a janela principal Como criar janelas secundárias modais O aplicativo seguinte é o nosso ponto de partida para o estudo da classe JDialog. Trata-se de uma janela principal com apenas um botão. Quando você clicar no botão abrir, uma nova janela com apenas um botão é aberta. Veja: public class NovaJanela2 extends JFrame{ JButton abrir; Inicial segundajanela; public NovaJanela2(){ super("abrir uma nova janela"); tela.setlayout(null); abrir = new JButton("Abrir"); abrir.setbounds(100,50,80,20); abrir.addactionlistener(new ActionListener(){ segundajanela = new Inicial(null,"Segunda Janela",true); segundajanela.setdefaultcloseoperation(jframe.dispose_on_close); segundajanela. ); tela.add(abrir); setsize(300, 150); setlocationrelativeto(null); NovaJanela2 app = new NovaJanela2(); private class Inicial extends JDialog{ JButton sair; public Inicial(Frame owner, String title,boolean modal){ super(owner,title,modal); Container tela1 = getcontentpane(); tela1.setlayout(null); sair = new JButton("Sair"); sair.setbounds(50,50,100,20); TBsair tsair = new TBsair(); sair.addactionlistener(tsair); tela1.add(sair); setsize(200,200); AleksandraR.Cardozo...Página109 setlocationrelativeto(null); private class TBsair implements ActionListener{ public void actionperformed(actionevent evento){ int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o programa?","mensagem de saída",joptionpane.yes_no_option);

110 if (status == JOptionPane.YES_OPTION) {segundajanela.setvisible(false); segundajanela.dispose(); Primeira janela Segunda Janela Janela Modal Você não pode clicar na janela de traz: Vamos analisar o aplicativo: Após a execução do aplicativo, clique no botão Abrir. Você visualizará a segunda janela com o botão de Sair. O entendimento do código é muito importante para o uso correto de janelas secundárias em um aplicativo Java. É Importante acompanhar atentamente a análise que faremos. A classe privada Inicial: private class Inicial extends JDialog{ JButton sair; public Inicial(Frame owner, String title,boolean modal){ super(owner,title,modal); Container tela1 = getcontentpane(); tela1.setlayout(null); sair = new JButton("Sair"); sair.setbounds(50,50,100,20); TBsair tsair = new TBsair(); sair.addactionlistener(tsair); tela1.add(sair); setsize(200,200); setlocationrelativeto(null); AleksandraR.Cardozo...Página110

111 Declaramos a variável que vai fazer referência ao botão sair: JButton sair; Declaramos a referência segundajanela que receberá a Incial: Inicial segundajanela; Classe privada Incial: Esta classe herda JDialog. Observe os parâmetros para seu construtor: public Inicial(Frame owner, String Title, boolean modal); O parâmetro owner é usado para especificar a janela principal a partir da qual a janela secundária será chamada. O parâmetro title serve para fornece o título para janela, modal especifica se a janela será modal ou não-modal. Uma janela modal tem o foco e deve ser fechada antes que o usuário volte à janela principal do aplicativo. Na linha linha do construtor temos uma chamada ao construtor da superclasse JDialog: super(owner,title,modal); O que fazemos aqui é transferir os valores recebidos para a superclasse. Chamamos os métodos para adicionar componentes na janela: Container tela1 = getcontentpane(); tela1.setlayout(null); Em seguinda, adicionamos o texto a ser exibido no botão Sair, logo após posicionamos o botão na janela, criamos a variável que vai fazer referência a classe privada TBsair, depois adicionamos essa classe ao botão sair pelo evento addactionlistener, e chamamos o método add, e adicionamos o botão na janela secundária. sair = new JButton("Sair"); sair.setbounds(50,50,100,20); TBsair tsair = new TBsair(); sair.addactionlistener(tsair); tela1.add(sair); Em seguida definimos o tamanho da janela secundária: setsize(200,200); Por final centralizamos a janela: setlocationrelativeto(null); Voltando à janela principal agora, para chamar a janela secundária, usamos o seguinte trecho de código: abrir.addactionlistener(new ActionListener(){ segundajanela = new Inicial(null,"Segunda Janela",true); AleksandraR.Cardozo...Página111 segundajanela.setdefaultcloseoperation(jframe.dispose_on_close); segundajanela. );

112 Quando clicamos no botão e o método actionperformed da classe anônima ActionListener é chamado, instanciamos um objeto da janela secundária e o atribuímos à referência segundajanela. Em seguida definimos o modo como a janela vai se comportar quando tentamos fecha-la: segundajanela.setdefaultcloseoperation(jframe.dispose_on_close); Ac constate DISPOSE_ON_CLOSE esconde a janela e em seguida a libera da memória. Este é o comportamente mais adequado para janelas modais. A úttima linha: segundajanela. Exibe a janela colocando-a na frente da janela principal. Caso queira, revise o tópico para posicionar a janela secundária no centro da tela quando ela for exibida. Classe privada TBsair (Tratar Botão Sair) private class TBsair implements ActionListener{ public void actionperformed(actionevent evento){ int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o programa?","mensagem de saída",joptionpane.yes_no_option); if (status == JOptionPane.YES_OPTION) {segundajanela.setvisible(false); segundajanela.dispose(); Sem muita modificações dos exemplos anteriores, o que tem de diferente é que quando você clicar em Sim para finalizar a janela secundária, o aplicativo coloca a janela invisível com o método setvisible(false); e depois retira da memória com o método dispose() Como criar janelas secundárias não-modais Janela não-modais são aquelas onde você, pode fazer uso da janela principal. Exemplo do aplicativo de janela não-modal, veja o exercício NovaJanela4.java. Modificações a serem observadas: segundajanela = new Inicial(null,"Segunda Janela",false); AleksandraR.Cardozo...Página112 Para janela não-modais, o último parâmetro deve ser false. Para janela modal, o último parâmetro deve ser true

113 25.3 Como criar janelas secundárias com JFrame Como a classe JDialog, também podemos criar uma janela com a classe JFrame, quando você iniciar esse aplicativo, será executada a tela principal com um botão chamado Abrir, quando você abrir a janela secundária com o botão Sair, a janela principal fica invisível com o método setvisible(false); e depois é retirada da memória com o método dispose(), já na janela secundária quando você clicar em sair uma mensagem será exibida, perguntando se você quer fechar o aplicativo, caso você responda sim a janela é fechada. public class NovaJanela extends JFrame{ JButton abrir; Inicial segundajanela; public NovaJanela(){ super("abrir uma nova janela"); tela.setlayout(null); abrir = new JButton("Abrir"); abrir.setbounds(100,50,80,20); abrir.addactionlistener(new ActionListener(){ segundajanela = new Inicial(); segundajanela.setdefaultcloseoperation(jframe.dispose_on_close); segundajanela. setvisible(false); dispose();); tela.add(abrir); setsize(300, 150); setlocationrelativeto(null); NovaJanela app = new NovaJanela(); private class Inicial extends JFrame{ JButton sair; private Inicial(){ super("menu Principal..."); tela.setlayout(null); sair = new JButton("Sair"); sair.setbounds(50,50,100,20); TBsair tsair = new TBsair(); sair.addactionlistener(tsair); tela.add(sair); setsize(200,200); setlocationrelativeto(null); private class TBsair implements ActionListener{ public void actionperformed(actionevent evento){ int status = JOptionPane.showConfirmDialog(null,"Deseja realmente fechar o programa?","mensagem de saída",joptionpane.yes_no_option); AleksandraR.Cardozo...Página113 if (status == JOptionPane.YES_OPTION) {segundajanela.setvisible(false); segundajanela.dispose();

114 26 Uso da Classe JWindow para criar uma Splash Screen Uma Splash Screen ou tela de splash é uma tela, geralmente retangular e contendo uma imagem e texto, que permanece no centro da tela do computador enquanto o aplicativo é iniciado. Seu uso é bem vindo em aplicativos que necessitam de tempo para reunir todos os recursos necessários para à sua execução. Quando todos os recursos estão alocados, a tela de Splash é fechada e a janela principal do aplicativo é exibida. A escolha de um objeto da classe JWindow para implementar uma tela de Splash é justificada pelo fato de que janelas criadas a partir dessa classe não possuem a barra de títulos, os botões de sistema (fechar, minimizar, etc) e a borda características das demais janelas. public class ExemploSplashScreen extends JFrame{ TelaInicial inicio; JButton botaosair; public ExemploSplashScreen(){ super("exemplo de Splash Screen"); tela.setlayout(null); inicio = new TelaInicial(); inicio. botaosair = new JButton ("Sair"); botaosair.setbounds(100,50,100,20); botaosair.addactionlistener( new ActionListener(){ System.exit(0); ); tela.add(botaosair); setsize(300, 150); setlocationrelativeto(null); ExemploSplashScreen app = new ExemploSplashScreen(); public void principal(){ private class TelaInicial extends JWindow{ public TelaInicial(){ tela.setlayout(new FlowLayout(FlowLayout.LEFT,1,1)); ImageIcon imagem = new ImageIcon("imagens/fundo.gif"); JLabel rotulo = new JLabel(imagem); tela.add(rotulo); ActionListener fechar = new ActionListener(){ setvisible(false); dispose(); principal();; AleksandraR.Cardozo...Página114 javax.swing.timer timer = new javax.swing.timer(5000,fechar); timer.start(); pack(); setlocationrelativeto(null);

115 A tela de splash mostrada na figura é exibida por cinco segundos. Decorrido esse período, ela será fechada e a janela principal do aplicativo será exibida. Vamos analisar todo o código começando com a classe TelaInicial: Esta classe estende JWindow, portanto não terá bordas, barra de títulos ou botões de sistema: private class TelaInicial extends JWindow Veja as cinco primeiras linhas de seu construtor: tela.setlayout(new FlowLayout(FlowLayout.LEFT,1,1)); ImageIcon imagem = new ImageIcon("imagens/fundo.gif"); JLabel rotulo = new JLabel(imagem); tela.add(rotulo); As primeiras duas linhas obtém uma referência ao painel de conteúdo da janela e defininem o gerenciador de layout. As duas linhas seguintes carregam a imagem a ser exibida e fornece o argumento para o construtor da classe JLabel. A imagem será exibida como parte de um rótulo. A última linha adiciona o rótulo à janela. Em seguida temos a instância da classe ActionListener. ActionListener fechar = new ActionListener(){ setvisible(false); dispose(); principal();; Quando o método actionperformed dessa classe é chamado, nós ocultamos a tela de splash, a liberamos da memória e efetuamos uma chamada ao método principal da classe principal. Para disparar o método actionlistener, fazemos uso de um timer: javax.swing.timer timer = new javax.swing.timer(5000,fechar); timer.start(); Este timer está ajustado para cinco segundos, mas você pode alterar este valor de acordo com sua finalidade. As duas últimas linhas da classe TelaInicial, redimensionam a janela de acordo com o tamanho da imagem usada e posicionam a janela no centro da tela. pack(); setlocationrelativeto(null); A tela do splash (TelaInicial) é chamada a partir da classe principal por meio das seguintes instruções: inicio = new TelaInicial(); inicio. E, para finalizar, eis o método principal: public AleksandraR.Cardozo...Página115 void principal(){ O único proposito deste método é tornar a janela principal visível, uma vez que não podemos acessa-la a partir da classe TelaInicial.

116 27 Banco de Dados Relacionais 27.1 O que é um Banco de Dados? Um banco de dados típico é formado por uma ou mais Tabelas. As tabelas, por sua vez, são formadas por COLUNAS e LINHAS. As COLUNAS, também chamadas de CAMPOS, servem para dar nome ao espaço reservados a determinada informação. Já as LINHAS de uma tabela, também chamadas de REGISTROS ou TUPLAS. São espaços reservados para a informação a ser armazenada. No exemplo apresentado em seguida temos três CAMPOS, de nome ID, NOME e TELEFONE. Os campos dão nome a cada coluna do Banco de Dado se indicam qual informação será armazenada em cada coluna. Três LINHAS, contendo informações de três pessoas. Note que, enquanto os campos são únicos e não se repetem, as linhas são em quantidade quase infinita e podem se repetir total ou parcialmente. Nota: Neste caso em particular, as informações do campo ID são geradas pelo próprio SGBD por meio da autonumeração; portanto, não são inseridas pelo usuários e também não se repetem. ID NOME TELEFONE 1 Tulio Maravilha Otavio Mesquita Luiz Pedro (AutoNumeração) O conjunto apresentado forma uma tabela de nome CADASTRO que, por sua vez, forma o banco de dados AGENDA. Um Banco de Dados típico é criado a partir das seguintes etapas: 1) Cria-se um banco de dados, dando um nome a ele. Esse nome vai ajudá-lo a identificar o tipo de informação que ele contêm. Exemplo de nomes para Banco de Dados: colecoes, vendas, cadastro, etc. Evitamos o uso de palavras acentuadas e separadas por espaço, tendo em vista a maior compatibilidade possível. Se necessário usar mais de uma palavra para nomear o banco de dados, separe-as pelo caractere UNDERSCORE (sublinhado), como em seguida: Departamento_Pessoal. 2) e 3) Cria-se uma ou mais tabelas, definindo para cada uma delas o nome de cada coluna e o tipo de dados que ela armazenará. Usando como exemplo, o banco de dados Departamento_Pessoal, podemos criar as tabelas funcionarios, imposto, ponto eletronico. Aqui também vale a regra de evitar acentuação na nomeação das tabelas e seus campos, bem como separar palavras pelo caractere UNDERSCORE (sublinhado). 4) Alimenta-se o banco de dados com os registros, seja por digitação ou outro processo: mecânico, óptico, magnético, etc. São esses registros que formarão as linhas da tabela. Os dados inseridos podem e devem usar acentuação e palavras com espaço em branco entre si. AleksandraR.Cardozo...Página Nome do Banco de Dados 2 - Nome da Tabela 3 - Nome e tipo de dados das COLUNAS 4 Entrada de Dados(digitação, etc)

117 27.2 Banco de Dados Relacionais Os Bancos de Dados atuais permitem que se criem relacionamentos entre as tabelas, os quais eliminam campos redundantes, e como conseqüência imediata, temos a redução do número de campos de cada tabela, redução no tempo de entrada de dados e mais velocidade no processamento. Tabela Clientes Banco de Dados VENDAS Tabela Pedidos Número do Cliente Nome do Cliente Endereço Telefone Número do Pedido Número do Cliente Descrição do Pedido Total Note que cada cliente pode fazer mais de um pedido, mais cada pedido só pode estar relacionado a um cliente. O campo que está sendo usado para relacionar uma tabela à outra é o Número do Cliente. Se este vínculo não fosse criado, não haveria como saber qual cliente é determinado pedido, a não ser que incluíssemos em cada pedido todos os dados do cliente. Com o uso dos relacionamentos, este procedimento é desnecessário. Os tipos de relacionamentos mais comuns são: UM para MUITOS Exemplo: um único cliente pode fazer vários pedidos, um único vendedor pode emitir vários pedidos, um único professor pode lecionar várias disciplinas. UM para UM Exemplo: um cliente e atendido por um único vendedor. MUITOS para MUITOS Exemplo: vários alunos podem ser matriculados em vários cursos e os vários cursos podem ter matriculados vários alunos BD x SGBD Os softwares usados para criar e gerenciar (armazenar e manupilar) os dados de uma empresa são conhecidos por SGBD SISTEMA GERENCIADOR DE BANCO DE DADOS. O SGBD adotado por nós é o ACCESS, que faz parte do pacote comercial OFFICE da empresa MICROSOFT. Embora os exemplos desta apostila utilizarem a versão 2000, versões anteriores e recentes também poderão ser usadas sem problemas, observam as pequenas diferenças nas telas que ilustram os tópicos. A apostila não faz o estudo específico sobre o MS AleksandraR.Cardozo...Página117 ACCESS, vamos apenas nos limitar a abordar apenas a parte que nos interessa, que é a criação do Banco de Dados. Seu gerenciamento será feito em Java e SQL.

118 27. 4 Índices Um índice não é uma característica do Modelo Relacional, mas sim uma estratégia de otimização de consulta para implementações desse modelo. Isso acontece porque o Modelo Relacional é um modelo teórico, porém quando transformado em uma implementação as suas operações (tanto da álgebra quanto do cálculo) exigem um tempo de busca. Se os dados estiverem ordenados de uma forma ideal, esse tempo de busca pode ser bastante reduzido. Os índices funcionam então como catálogos organizados de forma a beneficiar certo tipo de consulta. É possível imaginar que uma tabela seria associada a quantidade máxima de índices, porém isso traria muitos gasto de inserção e alteração. Por isso, em uma implantação de um banco de dados, são escolhidos os indíces mais adequados. Normalmente a chave primária é um índice. O limitador é imposto exclusivamente pela ferramenta de software utilizada. Sendo assim, para a recuperação dos dados é necessário a existência de mecanismos que facilitem a consulta, proporcionando uma perfomance aceitável para a mesma. Para isso, os sistemas de bancos de dados relacionais criam índices das tabelas, sendo que esses índices são atualizados constantemente. Caso o índice se corrompa por algum motivo, é possível que pesquisas possam retornar resultados não desejados ou que inserções de chaves duplicadas aconteçam. Nesse caso o banco de dados será corrompido também. Os sistemas de bancos (bases) de dados possuem mecanismos de evitar que esses eventos ocorram como também possibilitam a recuperação dos índices e consistência da tabela caso eles ocorram. Tipos de Índices De acordo com as necessidades de busca, os tipos de índices ideais variam. Alguns bancos implementam um tipo, outros vários. Um indice em árvore (e existem vários tipos de árvore) ordena os dados e permite buscas razoavelmente rápidas para elementos específicos e busca bastante rápidas para intervalos. O índice em árvore é geralmente baseado na idéia da Árvore Binária, porém adaptada para atender as características de usar Memória de. O tipo mais comum é a Árvore B. Um índice em hash organiza os dados codificando-os e mapeando-os em posições de array. São uma forma extremamente rápida de encontrar elementos específicos, mas praticamente inúteis para responder um intervalo de valores. Um índice binário é indicado quando o campo indexado tem um pequeno número AleksandraR.Cardozo...Página118 de valores que indicam a categoria da tupla, por exemplo o campo sexo (M,F), que é constantemente usada em consultas. Nesse caso, é criada uma lista dos elementos de cada tipo. Outros tipos de índices são: R-Tree, GiST, etc.

119 27.5 Criando Banco de Dados Antes de criar o Banco de Dados, crie uma pasta no raiz C:\, chamada Agenda. Execute o MS Access, marque a opção BANCO DE DADOS VAZIO DO ACCESS e clique em OK (Figura1) Figura1 No campo Salvar Em, localize a pasta C:\Agenda. Em Nome do Arquivo, digite Agenda e clique no botão Criar (Figura2). AleksandraR.Cardozo...Página119 Figura2 Com este procedimento o banco de dados Agenda.mdb, precisa de ao menos uma tabela para pode armazenar informações. A tabela pode ser criada com ACCESS, Java e SQL. Não feche o MS ACCESS.

120 27.6 Criando Tabelas no MS ACCESS Apesar de poder criar e gerenciar tabelas exclusivamente com Java e SQL, é importante você conhecer o processo de criação de tabelas no MS ACCESS. Confira se na coluna Objetos a opção Tabela está selecionada. Selecione a opção Criar Tabela No Modo de Estrutura. Depois de todos os passos anterior ser executado, Clique no botão Novo. Selecione a opção Modo de Estrutura. AleksandraR.Cardozo...Página120

121 Na tela seguinte crie os campos para a tabela. Depois de digitar estas informações, crie a Chave Primária, clique no campo Nome, depois clique no ícone da Chave Primária, depois de clicar na chave primária o campo nome receberá a chave, Após terminar os passos anterior, salve no Menu Arquivo, Salvar ou clique no ícone do Disquete, e coloque o nome da tabela de Cadastro e clique em OK. Agora a tabela Cadastro está criada e pronta para receber dados, seja pelo ACCESS, Java ou SQL. 28 O que SQL? SQL Structured Query Language / Linguagem de Consulta Estruturada é exatamente isto: uma linguagem. E como toda linguagem, se presta à comunicação SQL é uma linguagem de consulta, usada para estabelecer comunicação com banco de dados, dos mais simples aos mais sofisticados. Por ser mundialmente aceita como linguagem de consulta a banco de dados, os que se propõem a aprender SQL, estejam na China, no Brasil ou em qualquer país do mundo, receberão o mesmo conjunto de informações. SQL pode ser usada junto com linguagens procedurais, linguagens visuais e até mesmo com linguagens de script. E de certa forma, as linguagens de script serviram para dar um novo impulso ao interesse por SQL. Mas não é só isto. Um servidor de SQL faz com que a linguagem vá muito além do que a forma embutida pode oferecer Como usar SQL? As formas usuais de executar instruções SQL são: EMBUTIDA SQL pode ser chamada de dentro de uma linguagem (procedural, AleksandraR.Cardozo...Página121 visual ou de script). WIZARDS Rotinas embutidas nos SGBDs que permitem a construção de complexas instruções SQL, aparentes ou não, até mesmo por quem não conhece a linguagem.

122 RAD Geradores de Aplicações são mecanismos de geração automática de rotinas ou até mesmo a geração de aplicações completas independentes do mecanismo gerador. IDE Os Ambientes Integrados de Desenvolvimento facilitam o uso do SQL por permitirem que com o uso de interfaces gráficas e wizards, as instruções sejam montadas com mais facilidade e rapidez Tipos de Dados A tabela seguinte serve para identificar o tipo de dados do MS ACCESS e sua relação com o tipo de dados SQL: MS ACCESS SQL Texto CHAR CHAR(n) VARCHAR VARCHAR(n) Sendo n um número que identifica o comprimento do campo, ou seja, qual o limite máximo de caracteres que pode ser armazenado. Se não for especificado, será igual a 255. Memorando TEXT Número Formato MS ACCESS Byte Inteiro Inteiro Longo Simples Duplo Código de Replicação Decimal Formato SQL BYTE SMALLINT INTEGER REAL FLOAT UNIQUEIDENTIFIER DECIMAL ou NUMERIC DECIMAL(n) ou NUMERIC(n) DECIMAL(n,d) ou NUMERIC(n,d) Sendo n é o número máximo de caracteres permitido no campo, d é o número de casas decimais. Data/Hora DATE, TIME, DATETIME Moeda MONEY ou CURRENCY AutoNumeração COUNTER Sim/Não BIT Tipos Numéricos Diferença entre cada um dos tipos numéricos diz respeito à precisão e limitações de valores de cada um. A tabela seguinte serve para esclarecer o assunto: ACCESS SQL Tamanho de Armazenamento Byte BYTE 1 byte Inteiro AleksandraR.Cardozo...Página122 (Integer) SMALLINT 2 bytes Inteiro Longo (Long) INTEGER 4 bytes Simples (Single) REAL 4 bytes (vírgula flutuante de precisão simples) Duplo (Double) FLOAT 8 bytes (vírgula flutuante de precisão duplo) Decimal DECIMAL 14 bytes

123 29 ODBC/JDBC 29.1 O que é um Driver? Driver é um tipo de software que tem por finalidade permitir a comunicação entre sistemas. Os drivers geralmente são fornecidos pelos fabricantes, mas é comum encontrar drivers genéricos distribuídos com o sistema operacional e também drivers de terceiros, gratuitos ou não. O que se espera de um driver é a máxima compatibilidade e velocidade sem degradar a performance do sistema. Um driver tem que fazer o seu papel de forma transparente e sem que seja criado um gargalo O que é ODBC? ODBC Open DataBase Connectivity / Padrão Aberto de Conectividade a Banco de Dados é uma interface com grande disponibilidade de drivers para acesso a banco de dados. ODBC é instalado junto com o MS ACCESS, mas também pode ser instalado a partir do MDAC Mircrosoft Universal Data Access / Componente Microsoft de Acesso Universal a Banco de Dados. Para acessar o Administrador de Fonte de Dados ODBC, basta acessar o Painel de Controle. Importante: É altamente recomendável que você instale ou atualize o MDAC. Muitos erros de conexão encontrados, foram corrigidos após a instalação ou atualização deste componente. Você baixar no ou pelo instalador do ORACLE LITE O que é JDBC? JDBC Java DataBase Connectivity / Padrão Java de Conectividade a Banco de Dados é a interface que possibilita às aplicações Java acessarem bancos de dados relacionais e demais arquivos de dados. É atualmente a forma mais prática e rápida para conectar uma aplicação Java a um arquivo de dados JDBC / ODBC Embora um programa em Java possa utilizar diretamente a interface ODBC para acessar arquivos de dados, este procedimento é trabalhoso e elimina a portabilidade da aplicação. Mas onde conseguir a ponte JDBC-ODBC? Já vimos que os drivers ODBC são instalados com o MS ACCESS. E o JDBC? Você não precisa se preocupar com a instalação do JDBC e da ponte JDBC- ODBC. No Java2 essas interfaces fazem parte do pacote e são instalados junto com o JDK/SDK 1.2.X em diante. Até o Java 1(JDK 1.1.X), havia necessidade de baixar e instalar em separado o JDBC e a ponte JDBC-ODBC DriverManager O DriverManager é uma classe pacote Java.sql e serve para: Fazer a conexão com o banco de dados; Gerenciar o conjunto de drivers JDBC correspondente; Controlar o Login; Controlar AleksandraR.Cardozo...Página123 as mensagens entre o banco de dados e o driver. Um programador que utiliza um driver não precisa saber como ele foi codificado, mas deve saber como carregá-lo para que ele se registre no DriverManager.

124 29.6 Como Criar Fontes de Dados ODBC As telas seguintes mostram passo-a-passo como criar uma fonte de dados ODBC, agora vejamos este processo em detalhes: 1. Vá em Iniciar -> Configurações -> Painel de Controle e dê um duplo-clique no ícone Fonte de Dados ODBC (32 Bits). 2. Selecione a aba NFD de Sistema / Fonte de Dados de Sistema, dê um clique no botão Adicionar, conforme mostra a figura1. Figura1 3. Selecione o Driver para Microsoft Access (*.mdb) e dê um clique no botão Concluir, conforme mostra a figura2. AleksandraR.Cardozo...Página124 Figura2

125 4. Dê um clique no botão Selecionar, conforme mostra a figura3 Figura3 5. Localize na pasta C:\Agenda e o arquivo Agenda.mdb e dê um clique no botão Ok, conforme mostra a figura4. Figura4 6. Digite a palavra Agenda no campo Nome da Fonte de Dados e em seguida dê um clique no botão OK, conforme mostra a figura5. AleksandraR.Cardozo...Página125 Figura5

126 7. A Fonte de Dados está criada e você já pode visualizá-la em Fontes de Dados de Sistema, conforme mostra a figura6. Dê um clique no botão OK para fechar a janela do Administrador de Fonte Dados ODBC Figura6 30 SQL Java & Banco de Dados - Considerações Iniciais Este é o tópico principal de nossa apostila. É aqui que aprenderemos, na prática, a fazer conexões com banco de dados usando Java e SQL. Verifique se você possui os requisitos necessários para prosseguir: Um banco de dados com o nome Agenda.mdb, criado conforme o tópico Uma fonte de dados ODBC com o nome Agenda, criado conforme o tópico Anatomia de uma Conexão e Testando a Conexão Vejamos a anatomia de uma classe que implementa uma conexão com banco de dados: import java.sql.*; Linha 1, 2, 3 e 4 importa os pacotes de classes que implementa a criação de janelas, AleksandraR.Cardozo...Página126 botões, eventos dos botões e o acesso ao banco de dados com o Java. Os pacotes principais da linguagem são importados default. Pacotes de uso específico devem ter esta importação explícita nas linhas de codificação da classe.

127 5. public class TestaConexao extends JFrame{ 6.JButton botao; 7.public TestaConexao(){ 8. super("testando a Conexão..."); setlayout(null); 11. botao = new JButton("Verificar Conexão"); 12. botao.setbounds(50,50,150,20); 13. botao.addactionlistener(new ActionListener(){ 14. Linha 15 a 24 Na linguagem Java existe um método para notificação de erros. Caso o bloco de comandos situado entre as chaves da linha 15 a 24 retorne erro, ele será capturado pelo catch Linha 16, 17 e 18 Criam variáveis com a string de conexão, o nome do usuário e a senha, se houver. Lembre-se que a fonte de dados é criada em operação à parte. Se tiver dúvidas sobre criação de fontes de dados, leia novamente o tópico Linha 19 Esta linha carrega o driver que será usado pela aplicação Java para realizar a comunicação com o banco de dados. Linha 20 Cria uma conexão de nome con. Linha 21 Estabelece a conexão usando os valores das variáveis que foram declaradas inicializadas nas linhas 16, 17 e 18. Nome de usuário e senha são opcionais. Por estar dentro de uma instrução try, caso ocorra algum problema na conexão, programa desvia a execução do código para o bloco catch, que exibierá a mensagem da linha 22. Não é nem a única nem a forma mais profissional de tratar exceções, mas é a mais simples e funcional para quem está dando os primeiros passos em Java. Linha 22 Exibe uma mensagem dizendo que a conexão foi estabelecida com sucesso. Linha 23 Fecha a conexão aberta nas linhas 19 e try { 16. String url = "jdbc:odbc:agenda"; 17. String usuario = ""; 18. String senha = ""; 19. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 20. Connection con; 21. con = DriverManager.getConnection(url,usuario,senha); 22. JOptionPane.showMessageDialog(null,"Conexão estabelecida","mensagem do AleksandraR.Cardozo...Página127 Programa",JOptionPane.INFORMATION_MESSAGE); 23. con.close(); 24.

128 Linha 25 Captura os erros ocorridos durante a execução do aplicativo. Caso algo saia errado, será executado o bloco de comandos que está entre as chaves 26 e 28. Linha 27 Exibe uma mensagem de erro quando a conexão com o banco de dados não for estabelecida. 25. catch(exception event) 26. { 27. JOptionPane.showMessageDialog(null,"Conexão não estabelecida","mensagem do Programa",JOptionPane.ERROR_MESSAGE); ); 30. tela.add(botao); 31. setsize(300, 150); setlocationrelativeto(null); TestaConexao app = new TestaConexao(); Aplicativo sendo executado, clique no botão verificar para ver se a conexão foi estabelecida. Conexão OK Conexão com erro Criando a Tabela CREATE TABLE Podemos criar uma tabela de nome Tabela1 com os campos Campo1 (AutoNumeração), Campo2 (Texto), Campo3 (Memorando), Campo4 (Data/Hora) e Campo5 (Sim/Não). Veja a sintaxe: CREATE TABLE Tabela1 (Campo1 COUNTER, Campo2 VARCHAR(50), Campo3 TEXT, Campo4 DATETIME, Campo5 BIT) AleksandraR.Cardozo...Página128 Lembrando que os comandos do SQL, devem ser digitados em maiúsculos. Usando como referência a tabela de TIPOS DE DADOS, você pode criar tabelas com praticamente qualquer um dos tipos disponíveis no MS ACCESS.

129 E não é só isto, além do nome do campo e do tipo de dados, você pode incluir as seguintes chaves: NULL Não rquerido. O campo não precisa conter dados. Se nada for especificado, NULL será usado como padrão default. NOT NULL Requerido. É um campo cuja entrada de dados é obrigatória. Vamos criar a Tabela2 usando as seguintes informações: CREATE TABLE Tabela2 (ID COUNTER, Nome VARCHAR(50) NOT NULL, Tel1 VARCHAR(20) NOT NULL,Tel2 VARCHAR(20) NULL) Neste exemplo, a digitação do Nome e do Tel1 é obrigatório. Só o segundo telefone, Tel2, é opcional. Vamos criar a Tabela3 usando o PRIMARY KEY, (campo chave), que também pode ser criado na instrução SQL. CREATE TABLE Tabela3 (ID COUNTER PRIMARY KEY, Nome VARCHAR(50) NOT NULL, Tel1 VARCHAR(20) NOT NULL,Tel2 VARCHAR(20) NULL) Quase sempre vamos ter um ou mais campos em nossa tabela, que não podem se repetir. Exemplos de campos que não podem se repetir: nome, número de código, matrícula, login e etc. Com a palavra chave UNIQUE, definimos os campos os campos que não admitem dados repetidos: CREATE TABLE Tabela4 (ID COUNTER PRIMARY KEY, Nome VARCHAR(50) NOT NULL UNIQUE, Tel1 VARCHAR(20) NOT NULL,Tel2 VARCHAR(20) NULL) Obs: Execute o aplicativo ManipulacaoDeTabelas.java e execute a linha acima, quando você clicar no botão Executar Instrução uma mensagem confirmando êxito será exibida Alterando Tabelas (Incluir ou Excluir Campos) ALTER TABLE Para inserir um novo campo em nossa Tabela2, usamos o seguinte comando: ALTER TABLE Tabela2 ADD Endereco VARCHAR(50) NOT NULL Para excluir um campo em nossa Tabela2, usamos o seguinte comando: ALTER TABLE Tabela2 DROP Endereco 30.4 Excluir Tabelas DROP TABLE AleksandraR.Cardozo...Página129 Não é muito comum a remoção de uma tabela. Veja o comando: DROP TABLE Tabela1

130 Programa ManipulacaoDeTabelas em execução Digite a instrução SQL na caixa de texto e clique no botão para executar as instruções SQL. OBS: Estamos criando as tabelas dentro do banco de dados Agenda.mdb, pois na classe privada Manipular, chamamos os procedimentos referente a banco de dados. Para conferir se as tabelas foram criadas abra o banco de dados Agenda.mdb pelo MS ACCESS, e verifique se a coluna Objetos a opção Tabelas esta selecionada e veja se todas que você criou esta nesta opção. private void manipular(){ try { String url = "jdbc:odbc:agenda"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con; con = DriverManager.getConnection(url,usuario,senha); Statement st = con.createstatement(); st.executeupdate(texto.gettext()); JOptionPane.showMessageDialog(null,"Dados Criado Com Sucesso"," Mensagem do Programa",JOptionPane.INFORMATION_MESSAGE); con.close(); catch(exception event) { JOptionPane.showMessageDialog(null,"Conexão não estabelecida \n Comandos Inválidos","Mensagem do Programa",JOptionPane.ERROR_MESSAGE); 30.5 Inserindo Dados na Tabela (INSERT) Agora que vimos como CRIAR, ALTERAR e REMOVER tabelas, vamos ver como incluir dados em uma tabela já existente. Veja a sintaxe: AleksandraR.Cardozo...Página130 INSERT INTO NomedaTabela (Campo1, Campo2, Campo3) VALUES ( valor1, valor2, valor3 )

131 Laço If no aplicativo Incluir2.java: Quando o usuário utiliza campos Sim/Não, o banco de dados trata esses valores como 1 para sim, 0 para não, para facilitar o usuário, o laço If resgata o conteúdo que o usuário digitar na caixa de texto Deficiência, pode ser digitado s ou S, n ou N. Se o usuário digitar s ou S, o laço If armazena na variável result o valor 1, caso o usuário digite n ou N, o laço If armazena na variável result o valor 0. O conteúdo da variável result será utilizada na instrução SQL. if ((t6.gettext().equals("s")) (t6.gettext().equals("s"))) result = "1"; else if ((t6.gettext().equals("n")) (t6.gettext().equals("n"))) result = "0"; Vamos utilizar o exemplo Inclui2.java, para analisar a sintaxe da instrução SQL: st.executeupdate("insert INTO Tabela1 (Nome, Idade, Dn, Sal, Def) VALUES ('"+t2.gettext()+"',"+t3.gettext()+",#"+t4.gettext()+"#,"+t5.gettext()+","+result+")"); Os valores se apresentam entre aspas simples se forem do tipo String de caracteres. Se forem do tipo Número ou Bit (Sim/Não), não precisa de aspas. Datas e Horas entre o símbolo do sustenido (#), também conhecido como tralha ou jogo da velha. Valor do Tipo CURRENCY ou MONEY, ou 36,50, se você usar ponto separador, o MS ACCESS converte em vírgula, agora se você for usar vírgula, insira o valor entre aspas simples. Note que temos na tabela Tabela1 um campo Código do Tipo AutoNumeração, cujo os valores são gerados automaticamente pelo MS ACCESS. Lembretes: 1. Não inseri dados em campos do tipo COUNTER (AutoNumeração). 2. Atenção com os campos que possuem a chave NOT NULL, pois a inserção de dados é obrigatória. 3. Também será retornado erro caso você defina um campo como PRIMARY KEY ou UNIQUE e tente entrar com dados repetidos nestes campos. Excute também o aplicativo Incluir.java Consultas (SELECT) Agora que possuímos tabelas com dados, podemos usar a instrução SELECT e cláusula WHERE (onde) para consultas a essas tabelas. Cláusula WHERE perimte que façamos consultas (SELECT), alterações (UPDATE) e exclusões (DELETE) com o uso de condições para que a ação seja executada. AleksandraR.Cardozo...Página131 Aplicativo Consultar.java, veja a instrução SQL, vai listar listar todos os registro da tabela Tabela1 SELECT * FROM Tabela1

132 Aplicativo Consultar2.java, veja a instrução SQL, vai listar todos os registros da tabela Cadastro. SELECT * FROM Cadastro Operadores que podem ser usados com WHERE = igual a <> diferente de < menor que <= menor que ou igual a > maior que >= maior que ou igual 30.7 Consultas Avançadas O uso do NOT- Se usarmos NOT após a cláusula WHERE, vamos inverter a função do operador. Veja o exemplo só retorna a verdadeiro se o campo Cód tiver valores menor que 5: Veja aplicativo Consultar3.java. SELECT * FROM Tabela1 WHERE NOT Cod>5 O uso do LIKE Junto com WHERE, LIKE, torna a manipulação de um banco de dados desafiador. Veja o aplicativo Consultar4.java, retorna todos os registro que tem sobre nome Silva. SELECT * FROM Tabela1 WHERE Nome LIKE '%Silva%' Outros exemplos: Retorna todos os registros que possuam a string João no início do campo: WHERE Nome LIKE %João Retorna todos os registros que possuam a string João no final do campo: WHERE Nome LIKE João% Uso de Operadores Lógicos Podemos usar operadores lógicos AND (E), OR (OU) para melhorar ainda mais nossas operações de banco de dados. Exemplo Consultar5.java, listar todos os registros que o salário é menor ou igual a 500 e a data de nascimento menor que 01/01/1978, vai listar todos que são de SELECT * FROM Tabela1 WHERE Sal <=500 AND Dn < # # AleksandraR.Cardozo...Página132 Exemplo Consultar6.java, listar todos registros que o sobre nome tenha Silva e todos que o salário seja menor que 500. SELECT * FROM Tabela1 WHERE Nome LIKE '%Silva%' OR sal < 500

133 A Função IsNull Retorna os campos que não possuem dados. Lista todos os campos que estão em branco. Exemplo uma lista de alunos, que nem todos os alunos possuem telefone. Essa instrução lista esse campos em branco: WHERE InNull(Telefone) No aplicativo Consultar7.java, será consultada as duas tabelas e será exibido todos os registros das duas. Cada um correspondente ao seu nome. SELECT * FROM Tabela1,Cadastro WHERE Tabela1.Nome=Cadastro.Nome Consultas especificas Como podemos verificar no aplicativo Consultar8.java, nós podemos fazer uso de uma consulta individual. Onde você digita o Código e clicando no botão Consultar Registro, os campos sobre aquele registro é visualizado.veja: import java.sql.*; public class Consultar8 extends JFrame{ JButton botao; JLabel l1,l2,l3,l4,l5,l6; JTextField t1,t2,t3,t4,t5,t6; String result; int num; public Consultar8(){ super("inclusão de Registro"); tela.setlayout(null); l1 = new JLabel("Código: "); t1 = new JTextField(5); l2 = new JLabel("Nome: "); t2 = new JTextField(50); l3 = new JLabel("Idade: "); t3 = new JTextField(2); l4 = new JLabel("Data Nasc.: "); t4 = new JTextField(10); l5 = new JLabel("Salário: "); t5 = new JTextField(15); l6 = new JLabel("Deficiência: "); t6 = new JTextField(5); l1.setbounds(20,30,80,20); t1.setbounds(100,30,150,20); l2.setbounds(20,70,80,20); t2.setbounds(100,70,300,20); l3.setbounds(20,110,80,20);t3.setbounds(100,110,30,20); l4.setbounds(20,150,80,20);t4.setbounds(100,150,100,20); l5.setbounds(20,190,80,20);t5.setbounds(100,190,70,20); l6.setbounds(20,230,80,20);t6.setbounds(100,230,70,20); botao = new JButton("Consultar Registro"); botao.setbounds(110,270,150,20); tela.add(l1);tela.add(t1); tela.add(l2);tela.add(t2); tela.add(l3);tela.add(t3); tela.add(l4);tela.add(t4); tela.add(l5);tela.add(t5); tela.add(l6);tela.add(t6); tela.add(botao); AleksandraR.Cardozo...Página133 botao.addactionlistener(new ActionListener(){ try { String url = "jdbc:odbc:agenda"; String usuario = ""; String senha = "";

134 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con; con = DriverManager.getConnection(url,usuario,senha); Statement st = con.createstatement(); ResultSet rs = st.executequery("select * FROM Tabela1 WHERE Cod="+t1.getText()); rs.next(); t2.settext(rs.getstring("nome")); t3.settext(rs.getstring("idade")); t4.settext(rs.getstring("dn")); t5.settext(rs.getstring("sal")); num=integer.parseint(rs.getstring("def")); if (num==1) result = "Sim"; else if (num==0) result = "Não"; t6.settext(result); st.close(); con.close(); catch(exception event) { JOptionPane.showMessageDialog(null,"Conexão não estabelecida \npessoa não encontrada","mensagem do Programa",JOptionPane.ERROR_MESSAGE); ); setsize(450, 350); setlocationrelativeto(null); Consultar8 app = new Consultar8(); Vamos analisar o código do botão Consultar Registro: Cria os objetos que permitem a realização de consultas SQL. Statement permite a execução das instruções SQL, enquanto ResultSet armazena o resultado na janela: Statement st = con.createstatement(); ResultSet rs = st.executequery("select * FROM Tabela1 WHERE Cod="+t1.getText()); Invoca o método createstatement de Connection para obter um objeto que implementa a interface Statement. Agora podemos utilizar st para consultar o banco de dados: Statement st = con.createstatement(); AleksandraR.Cardozo...Página134 Realiza a consulta que será feita pelo campo Código, chamando o método executequery de Statement: ResultSet rs = st.executequery("select * FROM Tabela1 WHERE Cod="+t1.getText());

135 Posiciona no primeiro Registro: rs.next(); Exibe dentro das caixas de texto, as informações sobre o código pesquisado: t2.settext(rs.getstring("nome")); t3.settext(rs.getstring("idade")); t4.settext(rs.getstring("dn")); t5.settext(rs.getstring("sal")); Resgata o valor do campo Def, converte esse valor para inteiro e armazena na variável inteira num, declarada no início do aplicativo: num=integer.parseint(rs.getstring("def")); Utiliza o laço IF para condição, que verifica se o valor da variável num, for igual a 1, a sentença é verdadeira, logo o conteúdo a ser exibido na caixa de texto será Sim, caso contrário se o valor for igual a 0, logo a sentença será falsa e o conteúdo a ser exibido na caixa de texto, será Não. if (num==1) result = "Sim"; else if (num==0) result = "Não"; t6.settext(result); Caso o usuário entre com o código inválido, o aplicativo exibirá uma mensagem de texto, informando ao usuário a inválidade. Aplicativo Consultar8.java em execução. AleksandraR.Cardozo...Página135

136 Mensagem de erro quando o código inválido é informado. Consultas com ORDER BY Podemos optar por exibir os dados ordenados por um dos campos da tabela: SELECT * FROM Tabela2 ORDER BY Nome ASC ou DESC Se não for especificado a classificação da nossa ordenação, ela será ASC (ascendente) por default. Para a ordenação decrescente, usamos DESC. Mais de uma classificação pode ser utilizada bastar utilizar vírgulas. SELECT * FROM Cadastro ORDER BY Nome, Telefone_1 ASC 30.8 Atualizando Dados (UPDATE) A instrução UPDATE, serve para realizar atualizações nos registro da tabela. Sintaxe: UPDATE NomeDaTabela SET Campo= NovoValor WHERE Campo= ValorAntigo Atualização de registro pelo código, na Tabela2, foi selecionado o código 1 para realizar as alterações veja: UPDATE Tabela2 SET Nome='Pedro Carlos da Silva, Idade=29,Dn=# #,Sal=380.00,Def=0 WHERE Cod=1 No campo Sal, se você for adicionar o valor com vírgula coloque o valor entre aspas simples ex: 380,00 No campo Def, onde os valores retornados para a tabela é sim ou não, 1 corresponde a Sim, 0 corresponde a não. No campo Dn, onde os valores a serem incluídos são datas deve ser usar # #. String AleksandraR.Cardozo...Página136 utilizam aspas simples, e números não utilizam aspas simples. Só que nesse aplicativo foi feito um laço IF, para dizer que quando for digitando s ou S, a variável result recebe o valor 1, e exibe na caixa de texto o conteúdo sim. Caso for digitado n ou N, a variável result recebe o valor 0, e exibe na caixa de texto o conteúdo não.

137 if ((t6.gettext().equals("s")) (t6.gettext().equals("s"))) {result = "1"; t6.settext("sim"); else if ((t6.gettext().equals("n")) (t6.gettext().equals("n"))) {result = "0"; t6.settext("não"); E na isntrução SQL foi colocado a variável result, que contém o valor 1 ou 0. st.executeupdate("update Tabela2 SET Nome='"+t2.getText()+"',Idade="+t3.getText()+",Dn=#"+t4.getText()+"#,Sal ="+t5.gettext()+",def="+result+" WHERE Cod="+t1.getText()); Exemplo Alterar2.java, alterar da Tabela2 todos os salários para o valor que o usuário espercificar UPDATE Tabela2 SET Def="+t1.getText() 30.9 Excluindo Dados (DELETE) Para excluir dados de uma linha inteira de uma tabela, usamos a seguinte instrução DELETE: DELETE FROM NomeDaTabela WHERE Campo= Valor Por exemplo para excluir todos os registro da tabela Tabela2, aplicativo Excluir.java: DELETE * FROM Tabela2 Excluindo Registro pelo Código, aplicativo Excluir2.java: DELETE FROM Tabela2 WHERE Cod= t1.gettext() Excluindo com operadores lógicos: DELETE FROM Tabela2 WHERE Cod>3 AND sal< Exibindo Dados em uma Lista Até agora estamos visualizando nossas listagem no console. Agora vamos ver uma listagem feita na própria janela. Veja o aplicativo Relatorio.java: import java.sql.*; import java.util.*; AleksandraR.Cardozo...Página137 public class Relatorio extends JFrame{ private Connection con; private JTable tabela;

138 public Relatorio(){ super("agenda - Nomes" ); String url = "jdbc:odbc:agenda"; String usuario = ""; String senha = ""; try{ Class.forName( "sun.jdbc.odbc.jdbcodbcdriver" ); con = DriverManager.getConnection(url, usuario, senha); catch (Exception e){ JOptionPane.showMessageDialog(null,"Conexão não estabelecida","mensagem do Programa", JOptionPane.ERROR_MESSAGE); buscatabela(); setsize(600,200); Relatorio app = new Relatorio(); private void buscatabela(){ Statement st; ResultSet res; try{ Vector cabecalho = new Vector(); Vector linhas = new Vector(); st = con.createstatement(); res = st.executequery("select * FROM Cadastro ORDER BY Nome"); res.next(); ResultSetMetaData rsmd = res.getmetadata(); for (int i = 1; i <= rsmd.getcolumncount(); ++i) cabecalho.addelement(rsmd.getcolumnname(i)); do{ linhas.addelement(proximalinha(res,rsmd)); while (res.next()); tabela = new JTable(linhas,cabecalho); JScrollPane scroller = new JScrollPane( tabela ); getcontentpane().add(scroller, BorderLayout.CENTER); validate(); st.close(); catch (SQLException sqlex){ private Vector proximalinha(resultset rs, ResultSetMetaData rsmd){ Vector LinhaAtual = new Vector(); try{ AleksandraR.Cardozo...Página138 for (int i = 1; i <= rsmd.getcolumncount(); ++i) switch(rsmd.getcolumntype(i)){ case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i)); break; case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));

139 break; case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i))); break; catch(sqlexception e){ return LinhaAtual; Aplicativo Relatorio.java em execução A primeira vista o código do aplicativo Relatorio.java pode parecer um pouco complicado, mas tenho certeza de que após a análise, você perceberá que é só uma questão de tempo até estar totalmente familiarizado com os novos objetos usados no exemplo: 1. Declara tabela como instância do objeto JTable: private JTable tabela; 2. Classe pública Relatório é a responsável pela criação da conexão com o banco de dados, incluindo o tratamento de erros: public class Relatorio extends JFrame{ private Connection con; private JTable tabela; public Relatorio(){ super("agenda - Nomes" ); String url = "jdbc:odbc:agenda"; String usuario = ""; String senha = ""; try{ Class.forName( "sun.jdbc.odbc.jdbcodbcdriver" ); con = DriverManager.getConnection(url, usuario, senha); catch (Exception e){ JOptionPane.showMessageDialog(null,"Conexão não estabelecida","mensagem do Programa", JOptionPane.ERROR_MESSAGE); AleksandraR.Cardozo...Página139 buscatabela(); setsize(600,200);

140 3. O método buscatabela é o responsável por criar a tabela que será inserida na janela: buscatabela(); 4. Cria os objetos que permitem a realização de consultas SQL, Statement permite a execução das instruções SQL, enquanto o ResultSet armazena o resultado da consulta: Statement st; ResultSet res; 5. Cria os vetores cabecalho e linha para, armazenar respectivamente as colunas e linhas que irão compor nossa tabela: Vector cabecalho = new Vector(); Vector linhas = new Vector(); 6. Invoca o método createstatemente de Connection para obter um objeto que implementa a interface Statement. Agora podemos utilizar st para consultar o bando de dados: st = con.createstatement(); 7. Realiza a consulta em ordem alfabética chamando o método executequery de Statement: res = st.executequery("select * FROM Cadastro ORDER BY Nome"); 8. Posiciona no primeiro registro: res.next(); 9. Armazenaa informações sobre o banco de dados e a consulta, que poderão ser usadas pela conexão ou pelo desenvolvedor: ResultSetMetaData rsmd = res.getmetadata(); 10. Inicia um loop. O objeto das linhas seguintes é montar a tabela com seus cabeçalhos: Utiliza o método rsmd.getcolumncount(), que informa quantos registros compõem a tabela, e monta o cabeçalho, adicionando os títulos (Nome, Idade, Sexo e etc) a cada coluna do cabeçalho: for (int i = 1; i <= rsmd.getcolumncount(); ++i) AleksandraR.Cardozo...Página140 cabecalho.addelement(rsmd.getcolumnname(i));

141 Adiciona as linhas e o cabeçalho a tabela, cria barras de rolagem se necessário, adiciona as barras de rolagem a janela, com o painel centralizado e usa o método validate(), para validar os dados. do{ linhas.addelement(proximalinha(res,rsmd)); while (res.next()); tabela = new JTable(linhas,cabecalho); JScrollPane scroller = new JScrollPane( tabela ); getcontentpane().add(scroller, BorderLayout.CENTER); validate(); 11. Criamos mais um vetor e um loop, com a finalidade de percorrer a tabela, usando as informações obtidas do loop anterior: private Vector proximalinha(resultset rs, ResultSetMetaData rsmd){ Vector LinhaAtual = new Vector(); try { for (int i = 1; i <= rsmd.getcolumncount(); ++i) 12. Por fim, estrutura switch case verifica o tipo de dados e utilize a forma mais apropriada para obtê-los (getstring() para textos, getdate() para data/hora, getlong() para números): switch(rsmd.getcolumntype(i)){ case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i)); break; case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i)); break; case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i))); break; Exibindo relatório com filtro e chamando outra janela No aplicativo Relatorio1.java, temos uma janela que exibe um rótulo, uma caixa de texto e um botão, quando o usuário digita um nome, e clica no botão Exibir Relatório, o aplicativo retorna uma outra janela exibindo os nomes. Caso o usuário não digite nenhum nome, e clique no botão Exibir Relatório, o aplicativo exibe todos os nomes da tabela. Veja o aplicativo: Primeira janela do aplicativo Relatorio1.java AleksandraR.Cardozo...Página141

Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand

Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand Eclipse IDE Dá-se importância aos antepassados quando já não temos nenhum. Francois Chateaubriand O Eclipse O Eclipse (www.eclipse.org) e uma IDE (integrated development environment). Diferente de uma

Leia mais

Dicas para usar melhor o Word 2007

Dicas para usar melhor o Word 2007 Dicas para usar melhor o Word 2007 Quem está acostumado (ou não) a trabalhar com o Word, não costuma ter todo o tempo do mundo disponível para descobrir as funcionalidades de versões recentemente lançadas.

Leia mais

Sistema de Recursos Humanos

Sistema de Recursos Humanos Sistema de Recursos Humanos Projeto 1 O objetivo desse sistema é gerenciar a admissão e a demissão de funcionários. Esse funcionário pode ou não ter dependentes. Esse funcionário está alocado em um departamento

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 4 Ambiente de desenvolvimento Java QI ESCOLAS E FACULDADES Curso Técnico em Informática SUMÁRIO A LINGUAGEM JAVA... 3 JVM, JRE, JDK... 3 BYTECODE... 3 PREPARANDO O AMBIENTE

Leia mais

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas

Barra de ferramentas padrão. Barra de formatação. Barra de desenho Painel de Tarefas Microsoft Power Point 2003 No Microsoft PowerPoint 2003, você cria sua apresentação usando apenas um arquivo, ele contém tudo o que você precisa uma estrutura para sua apresentação, os slides, o material

Leia mais

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo.

Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. Manual de Instruções ECO Editor de Conteúdo Bem- Vindo ao manual de instruções do ECO Editor de COnteúdo. O ECO é um sistema amigável e intui?vo, mas abaixo você pode?rar eventuais dúvidas e aproveitar

Leia mais

CURSO DE PROGRAMAÇÃO EM JAVA

CURSO DE PROGRAMAÇÃO EM JAVA CURSO DE PROGRAMAÇÃO EM JAVA Introdução para Iniciantes Prof. M.Sc. Daniel Calife Índice 1 - A programação e a Linguagem Java. 1.1 1.2 1.3 1.4 Linguagens de Programação Java JDK IDE 2 - Criando o primeiro

Leia mais

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO

CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO CRIANDO BANCOS DE DADOS NO SQL SERVER 2008 R2 COM O SQL SERVER MANAGEMENT STUDIO Antes de criarmos um novo Banco de Dados quero fazer um pequeno parênteses sobre segurança. Você deve ter notado que sempre

Leia mais

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal

Leia mais

Iniciação à Informática

Iniciação à Informática Meu computador e Windows Explorer Justificativa Toda informação ou dado trabalhado no computador, quando armazenado em uma unidade de disco, transforma-se em um arquivo. Saber manipular os arquivos através

Leia mais

Microsoft Office PowerPoint 2007

Microsoft Office PowerPoint 2007 INTRODUÇÃO AO MICROSOFT POWERPOINT 2007 O Microsoft Office PowerPoint 2007 é um programa destinado à criação de apresentação através de Slides. A apresentação é um conjunto de Sides que são exibidos em

Leia mais

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna

Status. Barra de Título. Barra de Menu. Barra de. Ferramentas Padrão. Caixa de nomes. Barra de. Ferramentas de Formatação. Indicadores de Coluna O que é uma planilha eletrônica? É um aplicativo que oferece recursos para manipular dados organizados em tabelas. A partir deles pode-se gerar gráficos facilitando a análise e interpretação dos dados

Leia mais

Manual AGENDA DE BACKUP

Manual AGENDA DE BACKUP Gemelo Backup Online DESKTOP Manual AGENDA DE BACKUP Realiza seus backups de maneira automática. Você só programa os dias e horas em que serão efetuados. A única coisa que você deve fazer é manter seu

Leia mais

Guia Site Empresarial

Guia Site Empresarial Guia Site Empresarial Índice 1 - Fazer Fatura... 2 1.1 - Fazer uma nova fatura por valores de crédito... 2 1.2 - Fazer fatura alterando limites dos cartões... 6 1.3 - Fazer fatura repetindo última solicitação

Leia mais

LIÇÃO 1 - USANDO O GRAVADOR DE MACROS

LIÇÃO 1 - USANDO O GRAVADOR DE MACROS 1_15 - ADS - PRO MICRO (ILM 001) - Estudo dirigido Macros Gravadas Word 1/35 LIÇÃO 1 - USANDO O GRAVADOR DE MACROS No Microsoft Office Word 2007 é possível automatizar tarefas usadas frequentemente criando

Leia mais

Manual SAGe Versão 1.2 (a partir da versão 12.08.01)

Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Manual SAGe Versão 1.2 (a partir da versão 12.08.01) Submissão de Relatórios Científicos Sumário Introdução... 2 Elaboração do Relatório Científico... 3 Submissão do Relatório Científico... 14 Operação

Leia mais

Procedimentos para Reinstalação do Sisloc

Procedimentos para Reinstalação do Sisloc Procedimentos para Reinstalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Criação de backups importantes... 3 3. Reinstalação do Sisloc... 4 Passo a passo... 4 4. Instalação da base de dados Sisloc...

Leia mais

ÍNDICE... 2 INTRODUÇÃO... 4

ÍNDICE... 2 INTRODUÇÃO... 4 Mic crosoft Excel 201 0 ÍNDICE ÍNDICE... 2 INTRODUÇÃO... 4 Interface... 4 Guias de Planilha... 5 Movimentação na planilha... 6 Entrada de textos e números... 7 Congelando painéis... 8 Comentários nas Células...

Leia mais

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos Este procedimento corresponde ao fluxo de trabalho de Indexação de código de barras e de separação de documentos no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se

Leia mais

INTRODUÇÃO AO WINDOWS

INTRODUÇÃO AO WINDOWS INTRODUÇÃO AO WINDOWS Paulo José De Fazzio Júnior 1 Noções de Windows INICIANDO O WINDOWS...3 ÍCONES...4 BARRA DE TAREFAS...5 BOTÃO...5 ÁREA DE NOTIFICAÇÃO...5 BOTÃO INICIAR...6 INICIANDO PROGRAMAS...7

Leia mais

Curso de Aprendizado Industrial Desenvolvedor WEB

Curso de Aprendizado Industrial Desenvolvedor WEB Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos II Professor: Cheli dos S. Mendes da Costa Servidor de Aplicações WEB Tomcat Servidor Tomcat Foi desenvolvido

Leia mais

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007 CURITIBA 2015 2 SUMÁRIO INTRODUÇÃO AO MICROSOFT POWERPOINT 2007... 3 JANELA PRINCIPAL... 3 1 - BOTÃO OFFICE... 4 2 - FERRAMENTAS DE ACESSO

Leia mais

Construtor de sites SoftPixel GUIA RÁPIDO - 1 -

Construtor de sites SoftPixel GUIA RÁPIDO - 1 - GUIA RÁPIDO - 1 - Sumário Introdução...3 Por que utilizar o Construtor de Sites?...3 Vantagens do Construtor de Sites...3 Conceitos básicos...3 Configuração básica do site...5 Definindo o layout/template

Leia mais

Banco de Dados Microsoft Access: Criar tabelas

Banco de Dados Microsoft Access: Criar tabelas Banco de Dados Microsoft Access: Criar s Vitor Valerio de Souza Campos Objetivos do curso 1. Criar uma no modo de exibição Folha de Dados. 2. Definir tipos de dados para os campos na. 3. Criar uma no modo

Leia mais

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco). Permissões de compartilhamento e NTFS - Parte 2 Criando e compartilhando uma pasta - Prática Autor: Júlio Battisti - Site: www.juliobattisti.com.br Neste tópico vamos criar e compartilhar uma pasta chamada

Leia mais

OFICINA BLOG DAS ESCOLAS

OFICINA BLOG DAS ESCOLAS OFICINA BLOG DAS ESCOLAS Créditos: Márcio Corrente Gonçalves Mônica Norris Ribeiro Março 2010 1 ACESSANDO O BLOG Blog das Escolas MANUAL DO ADMINISTRADOR Para acessar o blog da sua escola, acesse o endereço

Leia mais

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos

Banco de Dados Microsoft Access: Criar tabelas. Vitor Valerio de Souza Campos Banco de Dados Microsoft Access: Criar tabelas Vitor Valerio de Souza Campos Objetivos do curso 1. Criar uma tabela no modo de exibição Folha de Dados. 2. Definir tipos de dados para os campos na tabela.

Leia mais

Sumário 1. SOBRE O NFGoiana DESKTOP... 3 1.1. Apresentação... 3 1.2. Informações do sistema... 3 1.3. Acessando o NFGoiana Desktop... 3 1.4.

Sumário 1. SOBRE O NFGoiana DESKTOP... 3 1.1. Apresentação... 3 1.2. Informações do sistema... 3 1.3. Acessando o NFGoiana Desktop... 3 1.4. 1 Sumário 1. SOBRE O NFGoiana DESKTOP... 3 1.1. Apresentação... 3 1.2. Informações do sistema... 3 1.3. Acessando o NFGoiana Desktop... 3 1.4. Interface do sistema... 4 1.4.1. Janela Principal... 4 1.5.

Leia mais

O Windows 7 é um sistema operacional desenvolvido pela Microsoft.

O Windows 7 é um sistema operacional desenvolvido pela Microsoft. Introdução ao Microsoft Windows 7 O Windows 7 é um sistema operacional desenvolvido pela Microsoft. Visualmente o Windows 7 possui uma interface muito intuitiva, facilitando a experiência individual do

Leia mais

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados

Tutorial Plone 4. Manutenção de Sites. Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Tutorial Plone 4 Manutenção de Sites Universidade Federal de São Carlos Departamento de Sistemas Web Todos os direitos reservados Sumário Introdução 1 Como fazer a autenticação do usuário 1.1 Através do

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Operador de Computador. Informática Básica

Operador de Computador. Informática Básica Operador de Computador Informática Básica Instalação de Software e Periféricos Podemos ter diversos tipos de software que nos auxiliam no desenvolvimento das nossas tarefas diárias, seja ela em casa, no

Leia mais

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da Java Laboratório Aula 1 Programação orientada a objetos Profa. Renata e Cristiane Introdução a Plataforma Java O que é Java? Tecnologia Linguagem de Programação Ambiente de Execução (JVM) Tudo isso é a

Leia mais

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção

Fluxo de trabalho do Capture Pro Software: Indexação de OCR e separação de documentos de código de correção Este procedimento corresponde ao fluxo de trabalho de Indexação de OCR com separação de código de correção no programa de treinamento do Capture Pro Software. As etapas do procedimento encontram-se na

Leia mais

Manual AGENDA DE BACKUP

Manual AGENDA DE BACKUP Gemelo Backup Online DESKTOP Manual AGENDA DE BACKUP Realiza seus backups de maneira automática. Você só programa os dias e horas em que serão efetuados. A única coisa que você deve fazer é manter seu

Leia mais

Criando um script simples

Criando um script simples Criando um script simples As ferramentas de script Diferente de muitas linguagens de programação, você não precisará de quaisquer softwares especiais para criar scripts de JavaScript. A primeira coisa

Leia mais

Procedimentos para Instalação do Sisloc

Procedimentos para Instalação do Sisloc Procedimentos para Instalação do Sisloc Sumário: 1. Informações Gerais... 3 2. Instalação do Sisloc... 3 Passo a passo... 3 3. Instalação da base de dados Sisloc... 16 Passo a passo... 16 4. Instalação

Leia mais

Pesquisa e organização de informação

Pesquisa e organização de informação Pesquisa e organização de informação Capítulo 3 A capacidade e a variedade de dispositivos de armazenamento que qualquer computador atual possui, tornam a pesquisa de informação um desafio cada vez maior

Leia mais

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 ArpPrintServer Sistema de Gerenciamento de Impressão By Netsource www.netsource.com.br Rev: 02 1 Sumário INTRODUÇÃO... 3 CARACTERÍSTICAS PRINCIPAIS DO SISTEMA... 3 REQUISITOS DE SISTEMA... 4 INSTALAÇÃO

Leia mais

Instalando o J2SE 5.0 JDK no Windows 2000/XP

Instalando o J2SE 5.0 JDK no Windows 2000/XP Instalando o J2SE 5.0 JDK no Windows 2000/XP Fabricio Leonard Leopoldino Descreve o processo de download, instalação e configuração do J2SE 5.0 JDK, no Windows 2000 e no Windows XP. 1 - Introdução Para

Leia mais

Manual de Utilização do Sistema GRServer Cam on-line (Gerenciamento de Câmeras On-line)

Manual de Utilização do Sistema GRServer Cam on-line (Gerenciamento de Câmeras On-line) Manual de Utilização do Sistema GRServer Cam on-line (Gerenciamento de Câmeras On-line) Criamos, desenvolvemos e aperfeiçoamos ferramentas que tragam a nossos parceiros e clientes grandes oportunidades

Leia mais

APOSTILA WORD BÁSICO

APOSTILA WORD BÁSICO APOSTILA WORD BÁSICO Apresentação O WORD é um editor de textos, que pertence ao Pacote Office da Microsoft. Suas principais características são: criação de textos, cartas, memorandos, documentos, mala

Leia mais

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA. Manual do Moodle- Sala virtual UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA Manual do Moodle- Sala virtual UNIFAP MACAPÁ-AP 2012 S U M Á R I O 1 Tela de Login...3 2 Tela Meus

Leia mais

02 - Usando o SiteMaster - Informações importantes

02 - Usando o SiteMaster - Informações importantes 01 - Apresentação do SiteMaster - News Edition O SiteMaster foi desenvolvido para ser um sistema simples de gerenciamento de notícias, instalado em seu próprio computador e com configuração simplificada,

Leia mais

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1

Despachante Express - Software para o despachante documentalista veicular DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 DESPACHANTE EXPRESS MANUAL DO USUÁRIO VERSÃO 1.1 1 Sumário 1 - Instalação Normal do Despachante Express... 3 2 - Instalação do Despachante Express em Rede... 5 3 - Registrando o Despachante Express...

Leia mais

O Microsoft Office é composto por diversos softwares, dentre eles o Word, o Excel, o Access e o Power Point.

O Microsoft Office é composto por diversos softwares, dentre eles o Word, o Excel, o Access e o Power Point. Editor de Texto Microsoft Word 1. Microsoft Office O Microsoft Office é composto por diversos softwares, dentre eles o Word, o Excel, o Access e o Power Point. O Word é um editor de texto com recursos

Leia mais

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET I Sumário 1. Objetivo do Documento... 1 2. Início... 1 3. Cadastro de Pessoa Física... 3 3.1. Preenchimentos Obrigatórios.... 4 3.2. Acesso aos Campos

Leia mais

atube Catcher versão 3.8 Manual de instalação do software atube Catcher

atube Catcher versão 3.8 Manual de instalação do software atube Catcher atube Catcher versão 3.8 Manual de instalação do software atube Catcher Desenvolvido por: Clarice Mello, Denis Marques Campos Dezembro de 2014 Sumario 1. Objetivo deste manual...3 2. Requisitos para instalação...3

Leia mais

Portal do Projeto Tempo de Ser

Portal do Projeto Tempo de Ser Sumário Portal do Projeto Tempo de Ser O que é um Wiki?...2 Documentos...2 Localizando documentos...3 Links...3 Criando um Documento...4 Criando um link...4 Editando um Documento...5 Sintaxe Básica...5

Leia mais

Guia de Início Rápido

Guia de Início Rápido Guia de Início Rápido O Microsoft Word 2013 parece diferente das versões anteriores, por isso criamos este guia para ajudar você a minimizar a curva de aprendizado. Barra de Ferramentas de Acesso Rápido

Leia mais

Google Drive. Passos. Configurando o Google Drive

Google Drive. Passos. Configurando o Google Drive Google Drive um sistema de armazenagem de arquivos ligado à sua conta Google e acessível via Internet, desta forma você pode acessar seus arquivos a partir de qualquer dispositivo que tenha acesso à Internet.

Leia mais

Microsoft Office Excel 2007

Microsoft Office Excel 2007 1 Microsoft Office Excel 2007 O Excel é um programa dedicado a criação de planilhas de cálculos, além de fornecer gráficos, função de banco de dados e outros. 1. Layout do Excel 2007 O Microsoft Excel

Leia mais

Banco de Dados BrOffice Base

Banco de Dados BrOffice Base Banco de Dados BrOffice Base Autor: Alessandro da Silva Almeida Disponível em: www.apostilando.com 27/02/2011 CURSO TÉCNICO EM SERVIÇO PÚBLICO Apostila de Informática Aplicada - Unidade VI Índice Apresentação...

Leia mais

Digifort Mobile Manual Version 1.0 Rev. A

Digifort Mobile Manual Version 1.0 Rev. A Digifort Mobile Manual Version 1.0 Rev. A 2 Digifort Mobile - Versão 1.0 Índice Parte I Bem vindo ao Manual do Digifort Mobile 1.0 5 1 Screen... Shots 5 2 A quem... se destina este manual 5 3 Como utilizar...

Leia mais

Adapti - Technology Solutions www.adapti.net Leonor cardoso nº 331 Fone : (041) 8844-7805 81240-380 Curitiba - PR MANUAL DO USUÁRIO

Adapti - Technology Solutions www.adapti.net Leonor cardoso nº 331 Fone : (041) 8844-7805 81240-380 Curitiba - PR MANUAL DO USUÁRIO MANUAL DO USUÁRIO 1 Índice Administração de Documentos...2 Lista de documentos criados...3 Criando um novo documento...3 Barra de ferramentas do editor...4 Editando um documento...7 Administrando suas

Leia mais

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2.

1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. 1. Introdução pág.3 2. Apresentação do sistema Joomla! pág.4 3. Acessando a administração do site pág.4 4. Artigos 4.1. Criando um Artigo 4.2. Editando um Artigo 4.3. Excluindo um Artigo 4.4. Publicar

Leia mais

Faculdade Boa Viagem Sistemas de Informação Gerenciais EXERCÍCIO PASSO-A-PASSO PEDIDOS E CONTROLE DE ESTOQUE. Microsoft Access.

Faculdade Boa Viagem Sistemas de Informação Gerenciais EXERCÍCIO PASSO-A-PASSO PEDIDOS E CONTROLE DE ESTOQUE. Microsoft Access. Faculdade Boa Viagem Sistemas de Informação Gerenciais EXERCÍCIO PASSO-A-PASSO PEDIDOS E CONTROLE DE ESTOQUE Microsoft Access Professor: M.Sc. Joel da Silva Recife-PE 2006 FBV Controle de Estoque passo-a-passo

Leia mais

SAMUEL SEAP 01-04-2015 INFORMÁTICA. Rua Lúcio José Filho, 27 Parque Anchieta Tel: 3012-8339

SAMUEL SEAP 01-04-2015 INFORMÁTICA. Rua Lúcio José Filho, 27 Parque Anchieta Tel: 3012-8339 SEAP 01-04-2015 SAMUEL INFORMÁTICA Microsoft Windows 7 O Windows 7 é um sistema operacional que trás uma melhor performance não apenas em recursos sistêmicos como também nos atrai pelo seu belo visual

Leia mais

CRIANDO TEMPLATES E LEGENDAS

CRIANDO TEMPLATES E LEGENDAS CRIANDO TEMPLATES E LEGENDAS Este tutorial tem como objetivo instruir passo à passo como criar templates de peças, utilizar os novos recursos de cadastro de propriedade de peças e criação de legenda. 1-

Leia mais

CONSTRUÇÃO DE BLOG COM O BLOGGER

CONSTRUÇÃO DE BLOG COM O BLOGGER CONSTRUÇÃO DE BLOG COM O BLOGGER Blog é uma abreviação de weblog, qualquer registro frequênte de informações pode ser considerado um blog (últimas notícias de um jornal online por exemplo). A maioria das

Leia mais

Instalando e configurando o Java Development Kit (JDK)

Instalando e configurando o Java Development Kit (JDK) Tutorial elaborado pelo professor José Gonçalo dos Santos Contato: jose.goncalo.santos@gmail.com Instalando e configurando o Java Development Kit (JDK) 1.1 Obtendo o JDK + JRE Para obter o JDK e o JRE

Leia mais

Associação Educacional Dom Bosco Curso de Engenharia 1º ano

Associação Educacional Dom Bosco Curso de Engenharia 1º ano Formatação condicional utilizando o valor da célula O que é? Algumas vezes é preciso destacar os valores, ou seja, como colocar em vermelho ou entre parênteses, os negativos, e de outra cor os positivos,

Leia mais

Instrução de Trabalho Base de Conhecimento

Instrução de Trabalho Base de Conhecimento Aprovado por Comitê da Qualidade Analisado criticamente por Dono do processo 1. OBJETIVOS Esta instrução de trabalho tem como objetivo orientar os colaboradores da SINFO, de como a será mantida e acessada.

Leia mais

O WINDOWS 98 é um sistema operacional gráfico, multitarefa, produzido pela Microsoft.

O WINDOWS 98 é um sistema operacional gráfico, multitarefa, produzido pela Microsoft. WINDOWS O WINDOWS 98 é um sistema operacional gráfico, multitarefa, produzido pela Microsoft. Área de Trabalho Ligada a máquina e concluída a etapa de inicialização, aparecerá uma tela, cujo plano de fundo

Leia mais

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO?

Figura 1: tela inicial do BlueControl COMO COLOCAR A SALA DE INFORMÁTICA EM FUNCIONAMENTO? Índice BlueControl... 3 1 - Efetuando o logon no Windows... 4 2 - Efetuando o login no BlueControl... 5 3 - A grade de horários... 9 3.1 - Trabalhando com o calendário... 9 3.2 - Cancelando uma atividade

Leia mais

Modo Estrutura é o ambiente de definição e estruturação dos campos, tipos de dados, descrição e propriedades do campo.

Modo Estrutura é o ambiente de definição e estruturação dos campos, tipos de dados, descrição e propriedades do campo. Unidade 02 A- Iniciando o Trabalho com o ACCESS: Criar e Salvar um Banco de Dados Acessar o ACCESS Criar e Salvar o Banco de Dados Locadora Encerrar o Banco de Dados e o Access Criando um Banco de Dados

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com

Gerenciamento de Arquivos e Pastas. Professor: Jeferson Machado Cordini jmcordini@hotmail.com Gerenciamento de Arquivos e Pastas Professor: Jeferson Machado Cordini jmcordini@hotmail.com Arquivo Todo e qualquer software ou informação gravada em nosso computador será guardada em uma unidade de disco,

Leia mais

INSTALAÇÃO DO SISTEMA CONTROLGÁS

INSTALAÇÃO DO SISTEMA CONTROLGÁS INSTALAÇÃO DO SISTEMA CONTROLGÁS 1) Clique duas vezes no arquivo ControlGasSetup.exe. Será exibida a tela de boas vindas do instalador: 2) Clique em avançar e aparecerá a tela a seguir: Manual de Instalação

Leia mais

Tutorial do Iniciante. Excel Básico 2010

Tutorial do Iniciante. Excel Básico 2010 Tutorial do Iniciante Excel Básico 2010 O QUE HÁ DE NOVO O Microsoft Excel 2010 é um programa de edição de planilhas eletrônicas muito usado no mercado de trabalho para realizar diversas funções como;

Leia mais

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania

Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania Manual de Publicaça o no Blog da Aça o TRIBOS nas Trilhas da Cidadania Sumário Objetivos do Blog... 2 Log-in... 3 Esqueci minha senha... 4 Utilizando o Blog... 5 Encontrando seu Blog... 5 Conhecendo o

Leia mais

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR

Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR Microsoft Office Outlook Web Access ABYARAIMOVEIS.COM.BR 1 Índice: 01- Acesso ao WEBMAIL 02- Enviar uma mensagem 03- Anexar um arquivo em uma mensagem 04- Ler/Abrir uma mensagem 05- Responder uma mensagem

Leia mais

Programação online em Java

Programação online em Java Universidade Federal do ABC Disciplina: Processamento da Informação Assunto: Programação online em Java Programação online em Java Conteúdo Conteúdo...1 Introdução... 1 1.1.Programas necessários... 1 1.2.Visão

Leia mais

Google Drive: Acesse e organize seus arquivos

Google Drive: Acesse e organize seus arquivos Google Drive: Acesse e organize seus arquivos Use o Google Drive para armazenar e acessar arquivos, pastas e documentos do Google Docs onde quer que você esteja. Quando você altera um arquivo na web, no

Leia mais

Atualizaça o do Maker

Atualizaça o do Maker Atualizaça o do Maker Prezados Clientes, Nós da Playlist Software Solutions empresa líder de mercado no desenvolvimento de software para automação de rádios - primamos pela qualidade de nossos produtos,

Leia mais

Tela Inicial: O Banco de Dados e seus objetos:

Tela Inicial: O Banco de Dados e seus objetos: Access 1 Tela Inicial: 2 ÁREA DE TRABALHO. Nosso primeiro passo consiste em criar o arquivo do Access (Banco de Dados), para isto utilizaremos o painel de tarefas clicando na opção Banco de Dados em Branco.

Leia mais

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG

UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG UNIVERSIDADE FEDERAL DE GOIÁS CERCOMP (CENTRO DE RECURSOS COMPUTACIONAIS) TUTORIAL DE USO DO WEBMAIL - UFG Página 1 de 26 Sumário Introdução...3 Layout do Webmail...4 Zimbra: Nível Intermediário...5 Fazer

Leia mais

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4. Aula 2 Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4. Conceitos O software controla os computadores(freqüentemente conhecido

Leia mais

NetBeans. Conhecendo um pouco da IDE

NetBeans. Conhecendo um pouco da IDE NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica

Leia mais

Desenvolvendo Websites com PHP

Desenvolvendo Websites com PHP Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.

Leia mais

MANUAL BACKUP XDENTAL 2012

MANUAL BACKUP XDENTAL 2012 MANUAL BACKUP XDENTAL 2012 Sumário CONFIGURANDO BACKUP... 2 ESCOLHENDO O TAMANHO DO ARQUIVO DE BACKUP... 4 CONFIGURANDO HORÁRIO DE INÍCIO DO BACKUP... 5 CONFIGURANDO BACKUP AO INICIAR O SISTEMA XDENTAL...

Leia mais

SCIM 1.0. Guia Rápido. Instalando, Parametrizando e Utilizando o Sistema de Controle Interno Municipal. Introdução

SCIM 1.0. Guia Rápido. Instalando, Parametrizando e Utilizando o Sistema de Controle Interno Municipal. Introdução SCIM 1.0 Guia Rápido Instalando, Parametrizando e Utilizando o Sistema de Controle Interno Municipal Introdução Nesta Edição O sistema de Controle Interno administra o questionário que será usado no chek-list

Leia mais

Logo abaixo temos a Barra de Menus que é onde podemos acessar todos os recursos do PHP Editor.

Logo abaixo temos a Barra de Menus que é onde podemos acessar todos os recursos do PHP Editor. Nessa aula iremos estudar: A anatomia da janela do PHP Editor Iniciando o servidor Web O primeiro exemplo de PHP Anatomia da janela do PHP Editor Barra de Títulos: É a barra azul que se encontra na parte

Leia mais

JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto

JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto JTABLE STUDENT CONTROL JSC Gil Eduardo de Andrade / Emílio Rudolfo Fey Neto INTRODUÇÃO / DESCRIÇÃO O sistema JTable Student Control - JSC disponibiliza uma interface gráfica em Java que possibilita ao

Leia mais

Aula 04 Word. Prof. Bruno Gomes bruno.gomes@ifrn.edu.br http://www.profbrunogomes.com.br/

Aula 04 Word. Prof. Bruno Gomes bruno.gomes@ifrn.edu.br http://www.profbrunogomes.com.br/ Aula 04 Word Prof. Bruno Gomes bruno.gomes@ifrn.edu.br http://www.profbrunogomes.com.br/ Agenda da Aula Editor de Texto - Word Microsoft Office Conjunto de aplicativos para escritório que contém programas

Leia mais

Manual de operação. BS Ponto Versão 5.1

Manual de operação. BS Ponto Versão 5.1 Manual de operação BS Ponto Versão 5.1 conteúdo 1. Instalação do sistema Instalando o BS Ponto Configurando o BS Ponto 2. Cadastrando usuários Cadastro do usuário Master Alterando a senha Master Cadastro

Leia mais

Manual de Utilização do PLONE (Gerenciador de página pessoal)

Manual de Utilização do PLONE (Gerenciador de página pessoal) Manual de Utilização do PLONE (Gerenciador de página pessoal) Acessando o Sistema Para acessar a interface de colaboração de conteúdo, entre no endereço http://paginapessoal.utfpr.edu.br. No formulário

Leia mais

WF Processos. Manual de Instruções

WF Processos. Manual de Instruções WF Processos Manual de Instruções O WF Processos é um sistema simples e fácil de ser utilizado, contudo para ajudar os novos usuários a se familiarizarem com o sistema, criamos este manual. Recomendamos

Leia mais

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word

Tutorial Gerar arquivo PDF. Gerando um documento pdf com várias imagens 1- Inserir imagem no Word Tutorial Gerar arquivo PDF. Com o objetivo de simplificar e diminuir o tamanho de arquivos anexos nos projetos, elaboramos um pequeno tutorial mostrando como gerar um único arquivo no formato pdf contendo

Leia mais

Sintaxe Básica de Java Parte 1

Sintaxe Básica de Java Parte 1 Sintaxe Básica de Java Parte 1 Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marcioubeno.com Fonte: Material da Profª Karina Oliveira Estrutura de Programa Um programa

Leia mais

Sistema de Controle de Cheques GOLD

Sistema de Controle de Cheques GOLD Sistema de Controle de Cheques GOLD Cheques GOLD é um sistema para controlar cheques de clientes, terceiros ou emitidos. Não há limitações quanto as funcionalidades do programa, porém pode ser testado

Leia mais

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR

Novell. Novell Teaming 1.0. novdocx (pt-br) 6 April 2007 EXPLORAR O PORTLET BEM-VINDO DESCUBRA SEU CAMINHO USANDO O NOVELL TEAMING NAVIGATOR Novell Teaming - Guia de início rápido Novell Teaming 1.0 Julho de 2007 INTRODUÇÃO RÁPIDA www.novell.com Novell Teaming O termo Novell Teaming neste documento se aplica a todas as versões do Novell Teaming,

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

Como Gerar documento em PDF com várias Imagens

Como Gerar documento em PDF com várias Imagens Como Gerar documento em PDF com várias Imagens Para Gerar documento em PDF com várias Imagens, temos que seguir dois passos: 1. Inserir Imagens no Word 2. Gerar PDF a partir de documento do Word 1- Inserir

Leia mais

Atualização Mandatória de Versão do Amadeus Pro Web (2.0P431BR) 25 de junho de 2007 Gerência de Produtos & Operações Amadeus Brasil

Atualização Mandatória de Versão do Amadeus Pro Web (2.0P431BR) 25 de junho de 2007 Gerência de Produtos & Operações Amadeus Brasil Atualização Mandatória de Versão do Amadeus Pro Web (2.0P431BR) 25 de junho de 2007 Amadeus Brasil Índice 1) O objetivo deste documento... 3 2) O que acontecerá quando chegar o dia da atualização de versão

Leia mais

CONFIGURAÇÃO MINIMA EXIGIDA:

CONFIGURAÇÃO MINIMA EXIGIDA: Este tutorial parte do princípio que seu usuário já possua conhecimentos básicos sobre hardware, sistema operacional Windows XP ou superior, firewall, protocolo de rede TCP/IP e instalação de software.

Leia mais

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet. 1. Descrição Geral Este manual descreve as operações disponíveis no módulo VTWEB Client, cuja finalidade é gerenciar cadastros de funcionários, realização de pedidos e controle financeiro dos pedidos.

Leia mais

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário CADERNO DE INFORMÁTICA FACITA Faculdade de Itápolis Aplicativos Editores de Texto WORD 2007/2010 Sumário Editor de texto... 3 Iniciando Microsoft Word... 4 Fichários:... 4 Atalhos... 5 Área de Trabalho:

Leia mais