netbeans java

Upload: tiago-silva

Post on 06-Jul-2015

606 views

Category:

Documents


0 download

TRANSCRIPT

1

UNIVERSIDADE ESTADUAL DO PIAU - UESPI CAMPUS UNIVERSITRIO PROFESSOR POSSIDONIO QUEIROZ CURSO LICENCIATURA PLENA EM COMPUTAO DISCIPLINA: LINGUAGEM DE PROGRAMAO IV PROFESSOR: JAMES MORAIS

A Linguagem

JAVAAplicaes com NetBeansPRODUZIDA PELA A TURMA DE COMPUTAO BLOCO V ANO 2007 CAMPUS OEIRAS

E

OEIRAS (PI), DEZEMBRO DE 2007

2

SUMRIOHistrico Da Linguagem-------------------------------------------------------04 Inicializao de variveis------------------------------------------------------05 Concatenao--------------------------------------------------------------------06 Instrues de controle----------------------------------------------------------07 Palavras reservadas-------------------------------------------------------------06 Instruo terica da linguagem------------------------------------------------08 Abstrao de tipos de dados---------------------------------------------------08 Definio de mtodos----------------------------------------------------------08 Passagem de valores------------------------------------------------------------08 A referencia this-----------------------------------------------------------------08 Ocultando dados-----------------------------------------------------------------08 Como Java executado--------------------------------------------------------09 Usando variveis----------------------------------------------------------------13 Compilao e execuo de um programa em java--------------------------16 Aplicaes com NetBeans-----------------------------------------------------17 Conhecendo a IDE--------------------------------------------------------------17 Aplicaes Grficas com Swing----------------------------------------------19 Principais Componentes--------------------------------------------------------20 Mtodos comuns a todos os componentes-----------------------------------21 Gerenciadores de Layout-------------------------------------------------------22 Aplicaes Grficas com Swing ---------------------------------------------23 Construindo Aplicaes com o NetBeans-----------------------------------23

3

Utilizando JLabel, JTextField e JButton com o NetBeans----------------23 Criando uma Calculadora------------------------------------------------------25 Utilizando JCombobox/Jlist e JRadioButton JCombobox/JList----------25 Utilizando JRadioButton com o NetBeans----------------------------------27 JOptionPane---------------------------------------------------------------------29 JEditorPane----------------------------------------------------------------------34 Trabalhando Mltiplos Formulrios Menus------------------------------35 Criando Mltiplos Formulrios Menus------------------------------------35 Criando Applets no NetBeans-------------------------------------------------43 Acessando Bancos de Dados--------------------------------------------------46 Construo de Aplicaes - Acessando um Banco de Dados Access- - --46 Aplicativo comercial------------------------------------------------------------57 Maquina Registradora----------------------------------------------------------57 Calculadora Visual --------------------------------------------------------65 Controlador de Mensalidade e Conversor de Velocidade ------------79

4 Histrico da Linguagem Java uma linguagem de programao ideal para aplicativos para a Internet. Mostraremos a seguir as origens da linguagem, e porque ela to apropriada para ser usada na Internet, particularmente na WorldWide Web. Embora as papplets Java sejam escritas na linguagem Java, no necessrio saber programar em Java para us-las. Se voc est interessado em usar applets sem realmente programar em Java, pode pular esta parte, que introduz a linguagem. Voc pode ler a definio da linguagem Java (em ingls), no site Java/HotJava da Web. http://www.javasoft.com/hooked/language-ref.html A Histria da Linguagem Java A histria de uma linguagem de programao pode contar muita coisa sobre a linguagem em si. Durante a fase de projeto, importante usar a linguagem em aplicativos reais. Do contrrio, a linguagem no ser to til quando for lanada, e no ser to divertido programar nela. A linguagem de programao Java foi usada no desenvolvimento de diversos aplicativos enquanto estava sendo projetada. Originalmente, pretendia-se que a Java fosse usada na programao de produtos eletrnicos de consumo (eletrodomsticos, eletroeletrnicos). Entretanto, ela se transformou em uma grande linguagem para programao para a WorldWide Web. As Origens da Java A linguagem de programao Java foi projetada e implementada por uma pequena equipe de pessoas coordenada por James Gosling na Sun Microsystems em Mountain View, Califrina. Alm de seu trabalho com a Java, James Gosling o autor do emacs do Unix e do sistema de janelas neWs. http://ww.javasoft.com/people/jag/index.html. A equipe Java original trabalhava no projeto de software para produtos eletrnicos de consumo. Rapidamente, eles descobriram que as linguagens de programao existentes, como C e C++, no eram adequadas. Programas escritos em C e C++ tm de ser compilados para cada tipo especfico de processador (chip de CPU). Quando um novo processador lanado, a maior parte do software tem de ser recompilada, para aproveitar os novos recursos do processador. Depois de compilados, os programas em C e C++ no so facilmente adaptveis ao uso de novas bibliotecas de software. Os programas tm de ser totalmente recompilados quando a biblioteca muda. Entretanto, softwares para produtos de eletrnica de consumo devem funcionar em novos processadores, porque os fabricantes tm como restrio o custo dos componentes. Se o preo de um processador fica muito alto, eles o substituiro imediatamente por um mais novo, de custo-benefcio mais atraente. Mesmo pequenas variaes de preo podem fazer diferena, quando se pensa em termos de vendas de milhes de unidades. Outro problema no uso de linguagens de programao tradicionais para o software de produtos eletrnicos de consumo est em que o consumidor quer uma vida til longa para seu produto. H torradeiras funcionando que tm 50 anos de idade. O plugue ainda se encaixa na tomada e as fatias de po ainda se encaixam nas aberturas. Os Software normalmente tem uma vida til bem mais curta, o que tornaria difcil construir uma torradeira com um computador embutido. Sempre que novos programas para torradeiras fossem escritos, eles teriam de apresentar compatibilidade retroativa, pois o software das torradeiras antigas teria de ser substitudo. O software usado em produtos eletrnicos de consumo tambm precisa ser muito confivel, muito mais do que o software para computadores. Se um eletrodomstico ou eletroeletrnico falha, o fabricante geralmente tem de substituir todo o aparelho.

5 Em 1990, James Gosling comeou a projetar uma linguagem de programao nova, que seria mais apropriada para produtos eletrnicos de consumo, sem os problemas de linguagens tradicionais como C e C++. O resultado Java, uma linguagem muito rpida, pequena e confivel, que rodar em todos os tipos de processadores. Inicializao de variveis No Java no permitido o uso de variveis indefinidas. Variveis definidas dentro do mtodo so chamadas de variveis automticas, locais, temporrias ou estticas e devem ser inicializadas antes do uso. Quando um objeto criado, as variveis membro so inicializadas com os seguintes valores em tempo de alocao: Tipo de varivel Valor inicial Tamanho byte 0 8 bits short 0 16 bits Int 0 32 bits long 0L 64 bits float 0.0f 32 bits Double 0.0d 64 bits Char \u0000 (Null) 64 bits Boolean false Operadores No Java os operadores so muito similares ao estilo e funcionalidade de outras linguagens como por exemplo o C e o C++. Pr-incremento: x = 10; x = x + 1; O valor da varivel x 11 ou x = 10;

6 ++x O valor da varivel x 11. Ps-Incremto: x = 10; x = x + 1; O valor da varivel x 11 ou x = 10; x++ O valor da varivel x 11. Diferena entre o Pr-Incremento e o Ps-Incremento: x = 10 ++x => neste exato momento a varivel a vale 11 x =10 x++ => neste exato momento a varivel x vale 10 Separadores: .[]();, Operadores: Operadores Descrio == Igualdade != Negao +-*/ Aritmticos && e || ou Concatenao O operador + utilizado para concatenar objetos do tipo String, produzindo uma nova String: String PrimeiroNome = Antonio; String SegundoNome = Carlos; String Nome = PrimeiroNome + SegundoNome; Casting ( Converso de tipos ) A linguagem Java no suporta converses arbitrrias de tipos de variveis. Voc deve explicitar a converso entre tipos de variveis. Exemplo: long bigval = 6; // Operao vlida int smallval = 99L; // Operao invlida porque so de tipos diferentes float z = 12.414F; // Operao vlida float zp = 12.414; // Invlido, porque est tentando atribuir um valor double. Convertendo Long bigValue = 99L; Int squashed = (int)(bigValue);

7

Instrues de controle: Declaraes de Fluxos If, else if (expresso) // expresso cujo retorno um valor do tipo boolean { Declaraes ou blocos } else // caso a condio anterior no seja satisfeita { Declaraes ou blocos } switch switch (expresso) // Esta expresso deve ser do tipo int ou char { case cond01: declaraes; break; // usado para sair do case. case cond02: declaraes; break; case cond03: declaraes; break; } for Loops for (expr_inicial; condio_boolean; incremento) { Declaraes ou blocos; } while Loops while(condio_boolean) { Declaraes ou blocos; } do Loops do { Declaraes ou blocos; } while(condio_boolean); Palavras Reservadas abstract do implements private throw boolean double import protected throws breaak else instanceof public true transient byte extends int return case false interface short try catch final long static void char finally native super volatile

8 class float new switch while continue for null synchronized default if package this Estruturao terica da linguagem: Classes e objetos: 1 Nvel 2 Nvel 3 Nvel Veculos de Passeio Veculos de Transporte Fabricante Veculos n Nveis Abstrao de Tipos de Dados Quando itens de dados so compostos para tipos de dados, semelhante a uma data, voc pode definir um nmero de bits de programas que especifica a operao do tipo de dados. Em Java voc pode criar uma associao entre o tipo data e a operao tomorrow a seguir: public class Date { private int day, month, year; public void tomorrow( ) { // cdigo que incrementa o dia } } Definio de Mtodos Em Java, mtodos so definidoss usando uma aproximao que muito similar usada em outras linguagens, como por exemplo C e C++. A declarao feita da seguinte forma: < modifiers > < nome > ( < lista de argumentos > ) < bloco > < modifiers > -> segmento que possue os diferentes tipos de modificaes inclundo public, protected e private. < tipo de retorno > -> indica o tipo de retorno do mtodo. < nome > -> nome que identifica o mtodo. < lista de argumentos > -> todos os valores que sero passados como argumentos. public void addDays (int days) Passagem de Valores Em Java o nico argumento passado by-value; este um argumento may not be changed do mtodo chamado. Quando um objeto criado, passado um argumento para o mtodo e o valor deste argumento uma referncia do objeto. O contedo do objeto passvel de alterao chamado do mtodo, mas o objeto referenciado jamais alterado. A Referncia This aplicado a mtodos no estticos. O Java associa automaticamente a todas as variveis e mtodos referenciados com a palavara this. Por isso, na maioria dos casos torna-se redundante o uso em todas as variveis da palavra this. Existem casos em se faz necessrio o uso da palavar this. Por exemplo, voc pode necessitar chamar apenas uma parte do mtodo passando uma instncia do argumento do objeto. (Chamar um classe de forma localizada); Birthday bDay = new Birthday(this);

9

Ocultando Dados Usando a palavra private na declarao de day, month e year na classe Date, voc impossibilitar o acesso a estes membros de um cdigo fora desta classe. Voc no ter permisso para atribuir valores, mas poder comparar valores. Como Java executado Um programa fonte escrito em linguagem Java traduzido pelo compilador para os bytecodes, isto , o cdigo de mquina de um processador virtual, chamado Java Virtual Machine (JVM). A JVM um programa capaz de interpretar os bytecodes produzidos pelo compilador, executando o programa cerca de 20 vezes mais lento do que C. Pode parecer ruim, mas perfeitamente adequado para a maioria das aplicaes. Com isto, um programa Java pode ser executado em qualquer plataforma, desde que esteja dotada de uma JVM. o caso dos programas navegadores mais populares, como o Netscape Navigator e o Internet Explorer, que j vm com uma JVM. A vantagem desta tcnica evidente: garantir uma maior portabilidade para os programas Java em cdigo-fonte e compilados. Porm, as JVM tendem a ser programas extensos que consomem muitos recursos, restringindo assim o tamanho das aplicaes escritas em Java. Atualmente, j existem compiladores capazes de traduzir bytecodes para instrues de mquina nativas, como o Just In Time compiler (ou JIT), tornando os programas ainda mais rpidos. Este compilador requer uma verso especfica para cada plataforma onde se pretende que o programa Java seja executado. Em contrapartida maior velocidade de execuo est tambm uma maior necessidade de memria, pois os bytecodes compilados, em geral, ficam trs vezes maiores do que o original. Uma alternativa bem mais interessante, e talvez muito mais vivel, a implementao da JVM em hardware na forma de uma placa ou microchip. A primeira iniciativa neste sentido da Sun Microelectronics, que est produzindo os chips picoJava ITM, microJavaTM e UltraJavaTM. Estes so capazes executar diretamente bytecodes, acelerando em milhares de vezes a velocidade de execuo. Isto permitir o desenvolvimento vivel de aplicativos cada vez mais complexos, abrangentes e funcionais. Espera-se que estas solues sejam brevemente empregadas na fabricao de telefones celulares, pagers, jogos, organizadores pessoais digitais, impressoras e eletrodomsticos de consumo, alm aplicaes mais srias como estaes de trabalho dotadas do sistema operacional JavaOSTM. Trata-se certamente do futuro das solues para aplicaes de rede. J se tornou clssica a idia de que para aprender uma nova linguagem de programao no se deve ir direto descrio sua formal. Ao invs disso, melhor examinar cuidadosamente um pequeno programa escrito nessa linguagem, o mais simples possvel, mas que permita "quebrar o gelo". Isso faz sentido pois, por exemplo, quando vamos aprender Ingls, ou outro idioma qualquer, no iniciamos com a leitura compenetrada de um livro de gramtica, mas aprendemos algumas estruturas simples e procuramos exercit-las, adiando o estudo

10 rigoroso para quando estivermos suficientemente maduros. Ao compreender as diversas partes componentes do exemplo, j teremos dado um grande passo para podermos escrever qualquer programa. Seguindo essa linha, apresentamos nosso primeiro programa, o clssico "Al pessoal!". O objetivo deste programa simplesmente escrever na tela a frase "Al pessoal!". Vejamos como o cdigo fonte: public class AloPessoal { public static void main(String args[]) { System.out.println("Alo pessoal!"); } } Digitando o programa Que tal colocarmos a mo na massa e digitarmos esse programinha? Para isso, recomendvel utilizar um editor de texto simples como o Notepad ou Bloco de Notas do Windows. Se estiver no Unix, use preferencialmente o TextEdit ou o vi. O nome do arquivo deve ser exatamente igual ao nome que aparece aps a palavra class na primeira linha do programa e dever ter .java como sufixo. Assim sendo, o nome dever ser "AloPessoal.java". Cuidado para digitar corretamente as maisculas e minsculas, pois a linguagem Java sensvel ao tipo de caixa das letras. Compilando o cdigo fonte Para criar o cdigo binrio, chamamos o compilador Java atravs da linha de comando, do seguinte modo: javac AloPessoal.java Com isso, ser criado um arquivo binrio (desde que tudo corra bem) com mesmo nome do arquivo original, mas com sufixo .class no lugar de .java. No nosso caso, teramos um arquivo AloPessoal.class. Entre as (muitas) coisas que poderiam dar errado nesse momento, o cdigo fonte pode conter erros. Esse no dever ser o caso, se tiver digitado o programa exatamente como aparece acima. Se, porm, o compilador emitir mensagens de erro, ser preciso identificar as linhas que esto incorretas, corrig-las no editor, e chamar o compilador novamente. As linhas que contm algum tipo de incorreo so listadas pelo compilador juntamente com seu nmero, facilitando sua localizao no editor.

Executando o cdigo

11 Para podermos executar o programa necessrio chamar o interpretador Java, pois, como vimos, os bytecodes foram feitos para rodar em uma Java Virtual Machine. Podemos fazlo do seguinte modo: java [nome da classe] onde [nome da classe] o nome do arquivo sem o sufixo .class. Em nosso caso, este ser AloPessoal. Ao executar o programa, ele dever exibir na tela a frase: Alo pessoal! Se isto no ocorrer, volte atrs e verifique se o programa foi digitado exatamente como aparece na listagem acima. Este um programa muito simples. Porm, a boa compreenso das estruturas presentes nele dever permitir a programao fluente em Java em pouco tempo. Entendendo a estrutura do programa Todo programa Java, deve conter ao menos uma declarao da forma public class [nome] { public static void main(String args[]) { ... } } Onde [nome] o nome da classe e a parte "..." o cdigo Java vlido, a ser executado no programa. O nome de uma classe um identificador, como qualquer outro presente no programa, porisso no deve conter espaos ou outros caracteres grficos, isto , deve ser um nome composto de uma seqncia de caracteres que seja vlida para um identificador. Outros exemplos de identificadores so nomes de variveis, nomes de comandos, etc. Vamos adiar um pouco a complicao sobre o que vem a ser uma classe, pois isso depende de alguns conceitos da programao orientada a objetos. Por hora, vamos apenas aceitar que todo programa Java deve conter ao menos uma classe, e que dentro de uma classe que vo os dados e os procedimentos. Notemos ainda que todo programa Java (mas no as applets) deve ter uma classe dotada de um procedimento chamado main. Os procedimentos em Java so chamados mtodos. Os mtodos encerram um conjunto de declaraes de dados e de comandos que so executados mediante a chamada do mtodo por seu nome. Vamos estudar os mtodos em detalhe mais adiante. O mtodo main o ponto onde se d o incio da execuo do programa, isto , um mtodo chamado automaticamente pela JVM.

12 Voltando ao nosso programinha AloPessoal, o cdigo a ser executado System.out.println("Alo pessoal!"); System.out.println o nome de uma funo que serve para escrever informaes textuais na tela. Os dados a serem escritos, devem estar delimitados entre os parnteses "(" e ")". "Alo pessoal!" uma frase. Em computao, uma palavra ou uma frase que tenha funo literal denominada string. Em Java, a representao de uma string constante se d colocando os caracteres entre aspas, por exemplo: "Imagem", "Rio de Janeiro", "Braslia", etc, so strings constantes. Note que existe um ; (ponto e vrgula) no final da linha, logo aps o ")". Em Java, obrigatrio colocar um ponto e vrgula aps cada comando. Isso porque um comando pode ser quebrado em mltiplas linhas, sendo necessrio sinalizar de algum modo onde que o comando termina. Java sensvel ao tipo de caixa, isto , distingue caixa alta (maisculo) da caixa baixa (minsculo). Os programadores acostumados a linguagem C e C++ vo certamente sentir-se em casa; porm os programadores acostumados linguagem PASCAL devem ficar mais atentos. Mais exemplos Podemos escrever "Alo pessoal!" escrevendo primeiro, "Alo " e depois, "pessoal!". Para isso, o programa deve ser alterado da seguinte forma: public class Alo { public static void main(String args[]) { System.out.print("Alo "); System.out.println("pessoal!"); } } Para escrever dados genricos na tela, existe o comando System.out.print que escreve o dado e mantm o carro na mesma linha. H tambm o System.out.println que escreve dados e muda o carro para a prxima linha. Podemos concatenar dois ou mais strings usando o operador "+". Por exemplo, "Alo " + "pessoal!" o mesmo que "Alo pessoal!". Para escrever um nmero, basta escrever [string]+n onde [string] um string qualquer e n um nmero. Por exemplo:

13 public class Numero { public static void main(String args[]) { System.out.println("O valor " + 29); } } Como o lado esquerdo da expresso um string, 29 convertido para string "29" e concatenado com "O valor ". Compilando e executando esse exemplo como fizemos anteriormente, devemos obter na tela: O valor 29 Observemos que os comandos System.out.print e System.out.println escrevem uma informao de cada vez. Desta forma, precisamos usar "+" para unir "O valor e " com 29 para formar uma nica string. No exemplo acima, nada impede que os dados sejam escritos em duas etapas: primeiro, "O valor e " e depois, 29. Neste caso, teramos: public class Numero { public static void main(String args[]) { System.out.print("O valor e "); System.out.println(29); } } Entretanto, a primeira abordagem parece mais razovel pois torna a programao mais clara e concisa, alm de economizar comandos. Usando variveis Uma varivel simplesmente um espao vago, reservado e rotulado para armazenar dados. Toda varivel tem um nome que a identifica univocamente e um valor, que corresponde informao a ela atribuida. Por exemplo, int n; especifica que n o nome de uma varivel que pode armazenar um nmero inteiro como valor. Em geral, num contexto onde aparece o nome de uma varivel ocorre a substituio por seu valor. O valor de uma varivel pode mudar muitas vezes durante a execuo de um programa, por meio de atribuies de valor. H diversos tipos de variveis em Java, correspondendo aos vrios tipos de dados aceitos. A discusso sobre esses tipos de dados ser feita no prximo captulo. Antes porm, vamos fazer um pequeno programa que declara uma varivel interira, atribui a ela uma constante, e imprime seu valor na tela. public class Numero { public static void main(String args[]) {

14 int n; n = 17+21; System.out.println("O valor numrico " + n); } } O local onde uma varivel est declarada extremamente importante. Uma varivel conhecida apenas dentro de algum escopo. Por exemplo, uma varivel declarada no escopo de uma classe (fora de um mtodo) conhecida por qualquer mtodo que esteja declarado dentro dessa mesma classe, enquanto uma varivel declarada no escopo de um procedimento conhecida apenas por esse procedimento. H ainda outros tipos de escopo, como veremos mais adiante. O sinal "=" um operador, utilizado para atribuir um valor a uma varivel. Por exemplo, n = 1; faz com que o valor 1 seja armazenado na varivel n. H tambm os operadores usuais de adio, subtrao, multiplicao e diviso de nmeros. Estes so representados pelos smbolos "+ ", "-", "*" e "/", respectivamente. Ao executar o programa acima (claro, depois de compil-lo), ele escreve O valor numerico 38 Introduzindo comentrios no cdigo Um comentrio uma poro de texto que no tem funo para o compilador Java, mas til ao leitor humano. Assim sendo, um comentrio identificado mas ignorado completamente pelo compilador Java. A utilidade dos comentrios bvia: deve conter explicaes sobre um particular desenvolvimento do cdigo, permitindo ao leitor compreender claramente o que se deseja realizar. Os comentrios so introduzidos no cdigo Java de duas formas distintas:

Colocado em qualquer parte do programa e delimitado entre "/*" e "*/". Escrevendo "//" antes do comentrio, que se estender at o final da linha.

Por exemplo, o cdigo: // // Este um exemplo de como somar dois numeros // public class Numero { public static void main(String args[]) { /* Mtodo principal */ double x,y; // estes sao numeros reais de dupla precisao

15 // System.out.print("x = 2.0"); /* inicializando o "x" */ x = 2; y = 3.0; /* iniciando o y, e fazendo y = y+x; */ y = y + x; // escrevendo a soma System.out.println("x+y = " + (x+y)); } } /* fim de Numero */ equivalente ao cdigo: public class Numero { public static void main(String args[]) { double x,y; x = 2; y = 3.0; y = y + x; System.out.println("x+y = " + (x+y)); } } Observao: double um tipo de dado que indica um nmero real de dupla preciso. No prximo captulo, vamos estudar detalhadamente os tipos de dados aceitos pela linguagem Java.

[seguinte]

16

Compilao e execuo de um programa em Java Ficheiro Hello.java // Java Hello World class Hello { public static void main(String[] args) { System.out.println("Hello World !"); } }

17

Aplicaes Com o Netbeans O Netbeans um ambiente integrado de desenvolvimento (IDE) que permite ao programador criar programas utilizando recursos grficos. Para trabalhar com o NetBeans necessrio ter instalado, anteriormente em sua mquina uma das verses do JDK (Java), preferencialmente uma verso igual ou superior a J2SDK1.3.1. NOTA: Antes de iniciar a construo dos exemplos interessante conhecer um pouco da sintaxe bsica da linguagem para facilitar o seu entendimento.

Conhecendo a IDE - Depois de instalado, execute o NetBeans clicando no cone na rea de trabalho ou clicando no menu iniciar Programas NetBeans NetBeans; - O mesmo dever exibir uma tela ou algo parecido, isto vai depender do tipo da instalao/ SO/ Nmero de vezes que o mesmo j tenha sido executado: 3.1. Criando uma Aplicao MDI: - Composta de: 1. Um Formulrio principal 2. Um Menu - Passos: 1 - Clique no menu File New: ser exibida uma tela; 2 - D um duplo clique em Java GUI Forms; 3 - Selecione Sample Form MDI Aplication com isto criaremos uma aplicao composta de um formulrio com um menu e que aceita a abertura de outros formulrios; 4 - Clique no boto NEXT; 5 - D um nome para o seu Aplicativo e no Campo Folder entre com um nome que ser a pasta onde a aplicao ficar armazenada - Package. Clique no boto Create Next;

18 6 - Ser mostrada uma tela informando o nome da Aplicao e o nome do Package criado, a superclasse que ser estendida e as classes a serem implementadas. No mude as opes padro, clique no boto Next; 7 - Clique no boto Next; 8 - Clique no boto Next; 9 - Clique no boto Finish; A IDE abrir uma tela. O NetBeans trabalha com varias mini-telas com finalidades especificas, todas de forma integradas a janela principal, a barra de menu. - Caso queira aumentar ou diminuir a rea de visualizao de uma destas basta passar o mouse e redimensiona-las de acordo com a necessidade do programa. - Para visualizar uma destas janelas clique no Menu View e selecione a Janela desejada. Ex: Source Editor ou Form Editor 10 - Feche a Janela Explorer (File System) clique no X, para aumentar a rea do formulrio de Trabalho; 3.2 Componentes da Janela em modo de Trabalho 3.3 Compilando: Clique no Menu Build Compile ou Pressione F9 3.4 Executando: Clique no Menu Build Execute ou Pressione F6 Na execuo da aplicao o formulrio / janela abre exibindo apenas o menu, isto porque no tem nenhum componente, verifique o menu sair, observe que o mesmo j foi implementado pelo NetBeans. Agora vamos inserir alguns componentes, procure deixar a sua aplicao parecida com a seguinte Tela no modo formulrio. (Lembre-se que possvel alternar entre as telas de cdigo e formulrio clicando no menu View e selecione Form Editor/Source Editor). 3.5 Trabalhando com componentes: - Na janela no canto superior direito, que mostra os componentes da aplicao, clique o Boto direito do mouse sobre BorderLayout e selecione Set Layout AbsolutLayout NOTA: - Esta mesma operao pode ser efetuada clicando-se com o boto direito do mouse sobre a rea do Formulrio e selecionando SetLayout AbsolutLayout. - necessrio modificar o Layout para que se possa colocar os componentes (botes, Labels, etc.) na posio desejada, isto porque o Formulrio (JFrame/Frame) quando

19 criado tem como padro o Layout BorderLayout que trabalha de forma diferente. Mais a frente ser abordado de uma forma melhor sobre os Layout. - Passe o mouse sobre os componentes da Aba Swing e observe que os mesmos so selecionados, clique no correspondente ao JLabel e clique no Formulrio: - Na Janela Propriedades clique em Text e insira o texto que deseja que aparea no JLabel: - Insira outros componentes e mude suas propriedades realizando experincias, compilando e executando, para visualizar os resultados. Criando uma Aplicao: - primeiro necessrio criar um projeto. Selecione General Java Application Next; Em Project digite o nome Desejado. Criando um Programa: File New File Java GUI Form JFrame Next; Na nova janela que se abre digite o nome do Programa e clique no Boto Finish Insira os componentes desejados Compile e Execute: Menu Build Compile; Para executar Menu Run Run Other. NOTA: Os exemplos que sero apresentados foram implementados utilizando o NetBeans 3.5.1, que se diferencia visualmente muito pouco em relao a verso 4.0 , posto que sero exemplos simples. Se for utilizar a verso 4.0 os passos a serem executados so os mesmos, salvo exceo quanto criao do Projeto que j foi demonstrado.

Aplicaes Grficas com Swing

Assunto: Aplicaes Grficas com Swing Objetivo: criar aplicaes Grficas utilizando Swing

Aplicaes Grficas com Swing

20 Nova famlia de componentes com funcionalidade ampliada e grande capacidade de configurao. O seu propsito permitir a criao de interfaces versteis e sofisticadas. Surgiu em 1997 com a JFC (Java Foundation Classes), com o Java 2, que engloba: - Componentes Swing - Compatibilidade com mltiplas Look and Feel` - peles - Biblioteca de acessibilidade monitores e teclados especiais - Biblioteca Java 2D - Compatibilidade com `Drag and Drop`

Principais Componentes

Os seus componentes so semelhantes ao da AWT (Abstract Window Toolkit), pois o modelo de eventos o mesmo. Diferenas: Componentes Swing so mais flexveis e mais numerosos no utilizam cdigo nativo, seus nomes iniciam com um J. A base para uma aplicao o JFrame ou JWindow ( janela) ou a classe JApplet (miniapplicativos). JFrame no um mero container, mas um painel especial que agrega trs outros componentes em camadas destes o que nos interessa o ContentPane (painel de contedo), onde vamos inserir os demais componentes: Container conteudo= getContePane(); a) JLabel: rtulo de texto. Mtodos especficos: String getText() retorna o texto do label void setText(String lbl) ajusta o texto do label para lbl b) JButton: um boto simples que pode ser criado com ou sem rtulo. Mtodos especficos: String getText() retorna o label(etiqueta) do boto void setText(String etiq) ajusta label do boto para o contedo de etiq

21 c) JTexField e JTextArea TextField: caixa de entrada de texto, possibilita a entrada e a edio de uma linha de texto. TextArea: caixa de entrada de texto com mltiplas linhas. Exibe barra de rolagem horizontal e vertical. Principais mtodos: String getText() retorna o texto contido no TextField void setText(String txt) ajusta o texto da TextField para txt d) JList e JCombobox JList: caixa de lista que permite a exibio de uma lista de itens que no podem ser editados diretamente pelo usurio. JCombobox: implementa uma lista de itens em que um nico item selecionado exibido. Principais mtodos: int getSelectedIndex(); retorna ndice do item selecionado String getSelectedItem(); retorna o nome do item selecionado void select(String str); ajusta o item selecionado para str

Mtodos Comuns a Todos os Componentes

void resize(int width, int height) Tamanho do componente void move(int x, int y) Mover componente void setForeground(Color x) Cor do componente void setBackground(Color y) Cor de Fundo do componente void disable() Desabilitando componente void enable() Habilitando componente

22

Gerenciadores de Layout

Gerenciamento de layout ( Layout Management ) o processo de determinar o tamanho e a posio dos componentes na janela grfica do programa, ou seja determinar onde os componentes ir ficar guiando a maneira como os elementos de interface sero dispostos dentro do container (Frame, Panel, Window). Existem basicamente os seguintes tipos de layout: a) FlowLayout b) BorderLayout c) CardLayout d) GridLayout e) GridBagLayout A escolha do gerenciador de layout depende muito das necessidades do programa. a) FlowLayout Simplesmente posiciona os componentes da esquerda para a direita, criando novas linhas se necessrio. b) BorderLayout o Padro: Divide a janela em cinco reas nas quais os componentes podem ser exibidos: norte, sul, leste, oeste e centro. c) CardLayout Permite apresentar dois ou mais componentes (geralmente painis) compartilhando o mesmo espao de apresentao. Funciona como uma pilha de cartas onde apenas uma fica visvel. - Cria-se um Painel fixo de Controle e um genrico (CardLayout) para conter outros painis. d) GridLayout

23 Deixa todos os componentes com igual tamanho, exibindo-os como uma tabela (linhas e colunas). e) GridBagLayout o mais flexvel dos gerenciadores de layout, permite colocar componentes em grades de colunas, sendo possvel um componente ocupar mais de uma coluna ao mesmo tempo. As linhas tambm no precisam necessariamente ter os mesmos tamanhos, ou seja, voc pode configurar diferentes larguras e alturas de acordo com a necessidade. No entanto, o mais difcil de ser implementado.

Aplicaes Grficas com Swing Construindo Aplicaes com o NetBeans

Assunto: Aplicaes Grficas com Swing Construindo aplicaes com o NetBeans Objetivo: criar aplicaes Grficas utilizando Swing

Utilizando JLabel, JTextField e JButton com o NetBeans.

1. Crie uma aplicao para somar os valores de duas Notas Fiscais a serem informados pelo usurio: Nesta Aplicao utilizaremos dois JTextField (onde o usurio ir digitar os valores) um JLabel (mostrar o resultado da soma) e um boto a ser clicado para efetuar a soma. Abra o NetBeans Clique no Menu File New D um Duplo clique em Java GUI Forms Selecione JFrame Form Clique no Boto Next. Na nova janela que se abre Digite JCalculadora" Clique no Boto Finish, seu projeto ser iniciado Antes de inserir os componentes, devemos modificar o Layout para AbsoluteLayout ou para NullLayout, para podemos criar o nosso Layout. NOTA: - O AbsoluteLayout um gerenciador de Layout criado especificamente para o NetBeans, portanto se for utiliza-lo sem o NetBeans ter de acrescentar o respectivo pacote e distribu-lo juntamente com o seu programa. Caso contrrio o mesmo no executar corretamente.

24 - O Null Layout no um gerenciador de Layout, mas corresponde situao em desativado uso dos gerenciadores, neste caso a posio dos componentes explicitamente definida atravs de mtodos especficos que a ferramenta se encarrega de manipular, mas os mesmo no vale para o Formulrio (Frame/JFrame), onde se faz necessrio a utilizao do mtodo setBounds: Ex: setBounds (10,10,300,400); // abre o tela na posio largura 10, altura 10, com uma largura de 300 e altura 400. Na janela, no canto superior direito, Clique com o boto direito do mouse sobre JFrame setLayout clique em NullLayout. Na janela do Centro do vdeo, embaixo da Aba Swing , existem vrios cones representando os respectivos componentes, passe o mouse sobre os mesmos e aparecer o nome, clique no primeiro, JLabel", e clique no Form, Clique no segundo, JButton , e clique no Form, Clique no nono, JTextField , e clique no Form (dois JTextField), insira mais dois JLabel e outro JtextField. Na janela Propriedade modifique as propriedades dos componentes de acordo com ao que se segue: Componente JFrame JLabel1 JLabel2 JLabel3 JTextField1 JtextField2 JButton1 Propriedade Title Text Text Text Text Text Text Somar Valor Calculadora Nmero 1 Nmero 2 Resultado

A parte visual j foi criada precisamos implementar o cdigo no boto para efetuar a soma ( pegar os nmeros e som-los). D um Duplo clique no boto e na janela de cdigo que aparece digite: double num1=Double.parseDouble(jTextField1.getText()); // converte texto para double double num2=Double.parseDouble(jTextField2.getText());

25 double result = num1 + num2; String R= String.valueOf(result); //Converte o Resultado para String jLabel3.setText("Resultado: "+R); //exibe no JLabel o Resultado Observe que os nomes dos componentes (jLabel3) comeam com letras minsculas. A parte do Cdigo que estiver na cor azul no aceita modificaes. Se for utilizado o Layout AbsoluteLayout basta compilar e executar o programa para o mesmo funcionar normalmente. Mas, como o Layout que est sendo utilizado o Null Layout, quando o programa for executado a janela aparecer mostrando apenas a barra de titulo. Para a janela abrir e mostrar todos os componentes, devemos acrescentar o comando com a localizao e tamanho da janela (setBounds(posX,posY,Largura,Altura)), procure a seguinte linha de cdigo: Aps initComponents(), insira o seguinte comando: setBounds(10,10,300,400); Se precisar voltar para o modo Form Editor clique no Menu View Form Editor ou Crt+8. Para ir para o cdigo clique no menu View Source Editor ou Crt+3. Compile Menu Build Compile (F9), execute Menu Build Execute (F5).

Criando uma Calculadora

Utilize o programa anterior e acrescente mais 4 (quatro) JButtons: Componente Propriedade JButton2 JButton3 JButton4 JButton5 Text Text Text Text Valor Diminuir Multiplicar Dividir Limpar Propriedade Valor Mnemonic Mnemonic Mnemonic TooltipText D M V Limpar as caixas de Texto

D um duplo clique no boto Diminuir e insira o seguinte cdigo:

26 double num1=Double.parseDouble(jTextField1.getText()); // converte texto para double double num2=Double.parseDouble(jTextField2.getText()); double result = num1- num2; String R= String.valueOf(result); //Converte o Resultado para String jLabel3.setText("Resultado: "+R); //exibe no JLabel o Resultado Repita o processo nos outros botes modificando apenas a operao matemtica. D um duplo clique no boto Limpar e digite: jTextField1.setText(" "); // limpa a caixa de texto jTextField2.setText(" "); jTextField1.requestFocus(); //muda o foco para a caixa 1 Compile (F9) e execute (F6). Para criar um arquivo que executado diretamente pelo Windows basta criar um arquivo .Bat : Abra o Bloco de Notas e digite: java Jcalculadora; Salve com um nome qualquer e com a extenso Calculadora.Bat , na mesma pasta do programa: OBS: Lembre-se que o Layout AbsoluteLayout EXCLUSIVO do NetBeans, sendo que para utiliza-lo efetivamente na sua aplicao, voc dever incluir no seu projeto o respectivo pacote, seno na execuo ocorrer erros, ou modifique o Layout para Null Layout e defina o tamanho de seu Frame/JFrame para que o mesmo possa ser visualizado no tamanho desejado (setBounds()), caso contrrio o mesmo aparecer mostrando somente a barra de titulo. OBS2: Para fins de agilizar a construo dos exemplos ser utilizado o Layout AbsoluteLayout , mas se for construir comercialmente um programa, o mesmo dever ter o Layout Null Layout .

Utilizando JCombobox/Jlist e JRadioButton JCombobox/JList

27

a) Criar uma aplicao para informar qual a forma de pagamento selecionada pelo usurio: Cheque, Carto ou Dinheiro: Clique no Menu File New Java GUI Forms clique em JFrame Form clique em Next Na Janela que se abre digite FormaPaga clique no boto Finish Modifique o Layout para AbsoluteLayout Clique no Form e modifique a propriedade Title do Form para Forma de Pagamento Clique no stimo cone JCombobox" e clique no Form, na Janela Propriedades clique em Model clique no Boto ... . Na janela que se abre em Item digite: cheque e clique no boto Add , digite: carto e clique no boto Add , digite dinheiro e clique no boto Add , clique no boto OK Insira um JLabel: clique no primeiro cone (JLabel) e clique no Form. Insira um JButton: clique no segundo cone (JButton) e clique no Form A parte visual foi criada, falta o cdigo. Para saber qual a opo selecionada utilize o Mtodo: Object getSelectedItem(). D um duplo clique no boto Escolher e digite : String S= (String) jComboBox1.getSelectedItem();//converte em String jLabel1.setText("A opo escolhida foi: " + S); //exibe opo no Jlabel Compile (F9) e Execute (F6).

28 Se desejar tambm possvel saber o ndice: getSelectedIndex() A utilizao do JList idntica a vista a cima, basta substituir o mtodo getSelectedItem(), por getSelectedValue().

Utilizando JRadioButton com o NetBeans

b) Criar uma aplicao para mostrar o tipo de motor (1.0/1.6/2.0) escolhido pelo usurio Crie uma nova Template JFrame Form Motor , clique no Menu File New ... No Form que se abre Clique no sexto cone ButtonGroup e clique no Form para criar um grupo de radio e permitir a seleo de apenas uma opo Clique no quinto cone JRadioButton" e clique no Form, na janela Propriedades selecione Text e digite Motor 1.0 . Selecione a propriedade buttonGroup e clique em buttonGroup1 , repita todo o processo por duas vezes para criar a opo Motor 1.6 e Motor 2.0 Insira um JLabel, Text: Opo Escolhida , no Form e um JButton, Escolher . Para saber qual a opo esta marcada devemos utilizar o Mtodo boolean isSelected(), que devolve true ou false. D um duplo clique no boto para inserir o cdigo: if (jRadioButton1.isSelected()) //verifica se a opo esta marcada -true jLabel1.setText("Motor escolhido: 1.0"); //exibe opo no JLabel if (jRadioButton2.isSelected()) //verifica se a opo esta marcada -true jLabel1.setText("Motor escolhido: 1.6"); if (jRadioButton3.isSelected()) //verifica se a opo esta marcada -true jLabel1.setText("Motor escolhido: 2.0"); Para saber qual o Texto exibido pelo JRadioButton basta utilizar o Mtodo: String getText(). Ex: String s=jRadioButton1.getText();

29

Aplicaes Grficas com Swing Componentes Especializados

Assunto: Aplicaes Grficas com Swing Componentes Especializados Objetivo: Criar aplicaes utilizando componentes especializados Swing. JOptionPane Janelas de dialogo para informar ou solicitar confirmao de operaes ou efetuar a entrada direta de valores: Mensagens Entrada de Texto Janelas de Confirmao Exemplos: //Mensagem JOptionPane.showMessageDialog( this, mensagem ); // Confirmao int x = JOptionPane.showConfirmDialog( this, Mensagem1 ); // Entrada de Texto String s= JOptionPane.showInputDialog( Mensagem 2 ); int x = JOptionPane.showConfirmDialog(this, "Confirmar? , "Aplicao", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); Nas IDE como NetBeans possvel inserir um objeto visual, mas no possvel controlar as aes dos respectivos botes. Se quiser utiliza-los no Netbeans, insira-os dentro de um mtodo actionPerformed de um JButton.

30 Exemplo: - Criar um Programa contendo um boto que ao ser pressionado exiba informaes sobre o programa: - Crie uma nova Template JFrame Form Mensagem , Menu File New ... - Mude o Layout para AbsoluteLayuot - Insira um JButton Mensagem , d um duplo clique para inserir o cdigo: JOptionPane.showMessageDialog(this,"Programa criado \n utilizando o Netbeans"); // o \n foi utilizado para mostrar como inserir uma quebra de linha. - Este componente pertence ao pacote Swing que deve ser importado atravs do import - Procure no cdigo o comando que cria a classe, que est no incio do programa: public class Mensagem extends javax.swing.JFrame { - Antes deste comando insira o cdigo: import javax.swing.*; //importa os componentes do pacote swing - Compile e Execute. Todos os exemplos anteriores poderiam ter utilizado o JOptionPane.showMessageDialog. ToolTipText: texto explicativo exibido quando o mouse passa sobre o componente: No Netbeans basta inserir o texto desejado na propriedade ToolTipText dos Componetes (JLabel, JTextField, JButton ...). JFileChooser Janelas de dialogo para seleo de arquivos: Abrir (Open) Salvar (Save) Exemplo: Cdigo a ser inserido na ao de um boto Abrir Arquivo: JFileChooser arq= new JFileChooser(); int Result=arq.showOpenDialog(this);

31 if(Result==JFileChooser.APPROVE_OPTION){ File arquivo= arq.getSelectedFile(); //Classe paraArquivos System.out.println(arquivo); //Imprime nome do Arquivo } } } Classe File: suporte para tratamento de arquivos: FileReader/FileWrite FileInputStream / FileOutputStream - so usados para ler ou gravar arquivos no sistema: FileReader in = new FileReader("Entrada.txt"); FileWriter out = new FileWriter ("Saida.txt"); Comando para ler e escrever arquivos (Byte e no String/char): read() e write(String s) while ((int c=arqin.read()) !=-1){ // l Entrada.txt out.write(c); // grava em Saida.txt System.out.write(c); // direciona para o vdeo } out.write(p); // gravar a String no final do arquivo in.close(); // fecha os arquivos out.close(); } } Exemplo: criar um programa que permita selecionar um arquivo de texto, .txt e mostrar o contedo em um JTextArea:

32 Crie uma nova Template, Java Gui Form JFrame Form Insira um JTextArea e um JButton, Abrir Arquivo , e d um duplo clique no boto, digite: try{ // Blco de Tratamento de erros/excees nos arquivos File arquivo; //Objeto para arquivos JFileChooser arq= new JFileChooser(); // objetos de seleo de arquivo int Result=arq.showOpenDialog(this); // mostra a janela de seleo de arquivo if(Result==JFileChooser.APPROVE_OPTION){ //verifica se foi seleciona um arquivo arquivo = arq.getSelectedFile(); //verifica o arquivo selecionado int c; //varivel para receber os Bytes do arquivo String Texto=""; //varivel para receber os dados do arquivo FileReader inArq = new FileReader(arquivo.getPath()); //abre o arquivo para leitura while((c = inArq.read())!=-1){ //l Byte por Byte at o final do arquivo (-1) Texto=Texto+(char)c; // transforma o Byte lido em um char } //final do while jTextArea1.setText(Texto); // exibe no JTextArea o contedo lido do arquivo inArq.close(); } // final do if } catch (IOException ioe) { // verifica qual foi o erro/exceo JOptionPane.showMessageDialog(this,"erro ao abrir o arquivo"); // mensagem de erro } Insira, antes da declarao da classe public class , no comeo do programa: import java.io.*; import javax.swing.*;

33 possvel acrescentar um outro boto para salvar novos textos que o usurio pode inserir no JTextArea: Acrescente um novo JButton Salvar , d um duplo clique e digite: try{ File arquivo; JFileChooser arq= new JFileChooser(); int Result=arq.showSaveDialog(this); if(Result==JFileChooser.APPROVE_OPTION){ arquivo = arq.getSelectedFile(); //Classe para Arquivos FileWriter inArq = new FileWriter(arquivo.getPath()); inArq.write(jTextArea1.getText()); // l o arquivo inArq.close(); } }catch(IOException ioe) { JOptionPane.showMessageDialog(this,"erro ao abriri o arquivo"); } // Add your handling code here: } Estes comandos podem ser inseridos em um Menu. A primeira aplicao criada como exemplo, representa a criao de editor de texto j composto de um Menu, mas que no possui os respectivos cdigos para efetuar as operaes de abrir um documento e salv-lo. Experimente implementar os respectivos cdigos nessa para efetivamente criar um editor de texto. JEditorPane Painel de Contedo uma rea de texto especializada na exibio e edio de vrios tipos de contedo: texto simples(text/plain), HTML(text/html) e RTF Rich Text Format(text/rtf). Exemplo: Criar um Programa que permita exibir um arquivo com extenso .html ou .htm

34 Crie uma nova Template Java GUI Form JFrame Form Insira um objeto JScrollPane no Form e insira dentro deste um objeto JEditorPane, da Aba Swing (Other) Insira um objeto JButton, Selecionar Pgina, digite o cdigo : JFileChooser arq = new JFileChooser(); int result=arq.showOpenDialog(this); if(result==JFileChooser.APPROVE_OPTION){ try{ File arquivo= arq.getSelectedFile(); URL pagina= new URL("file:"+arquivo.getPath()); jEditorPane1.setPage(pagina); } catch(MalformedURLException mue) { JOptionPane.showMessageDialog(this,"Erro na pgina"); }catch( IOException ioe){ JOptionPane.showMessageDialog(this,"Erro no arquivo"); } } Insira a importao dos pacotes, antes da declarao da classe public class : import javax.swing.*; import java.net.*; import java.io.*; Compile e Execute.

Trabalhando Mltiplos Formulrios - Menus.

35

Assunto: Aplicaes Grficas com Swing Mltiplos Formulrios. Objetivo: Criar aplicaes com Vrios Formulrios Criando Mltiplos Formulrios - Menus Para se construir uma Aplicao contendo vrios Formulrios preciso cri-los em separados e cham-los em um Formulrio Principal atravs de Botes ou de Menus. No Formulrio Principal a chamada dos outros formulrios consiste em se criar instncias dos respectivos formulrios que se deseja exibir, utilizando o mtodo show(), ou o mtodo setVisible(boolean). Na criao de Formulrios utilizando o NetBeans ( e outras IDE), a ferramenta cria os comandos necessrios para o fechamento do Formulrios, desta forma se no Formulrio Principal cham-lo e este aps, ser aberto, for fechado provocar o fechamento da aplicao. Para evitar este problema devemos modificar estes comandos para podermos fechar o formulrio sem fechar a Aplicao. Exemplo Criar uma Aplicao contendo um Menu que exibi os Formulrios de Cadastro de Clientes e de Veculos Clique no Menu File New Java GUI Forms Boto Next em Name digite SistLocao Clique no Boto Finish preciso criar o Menu. Na Aba Swing, clique no cone JMenuBar e clique no Form na Janela Propriedades clique em Text e digite Cadastro (texto que ser exibido pelo Menu) Clique com o boto direito do mouse sobre o Menu criado e selecione Add JMenuItem na janela propriedade clique em Text e digite Clientes clique novamente com o boto direito do mouse sobre o Menu criado e selecione Add JMenuItem clique em Text e digite Veculos.

36 Observe que os SubMenus no aparecem no Form este sero exibido na execuo do programa, mas apara o objeto criado no Form. Os Menus foram criados faltam os Formulrios Clientes e Veculos. Crie um Novo Form Clique no Menu File New clique no Boto Next em Name digite Clientes clique no boto Finish Modifique o Layout para AbsoluteLayout e insira trs JLabels para exibir os rtulos Nome , Fone , CPF e trs JTextFields para podermos digitar/exibir os dados. Devemos modificar o comando responsvel pelo fechamento do Form, para que no feche a Aplicao. Clique com o boto direito do mouse no Form e clique em Goto Source ou pressione Ctr-3 , procure o comando, que deve estar antes do mtodo main: private void exitForm(java.awt.event.WindowEvent evt) { Apague o comando: System.exit(0); E digite no seu lugar: setVisible(false); Volte para o primeiro Form (SistLocao), para isto clique na Aba SistLocao, localizada na janela principal do Form D um duplo clique em JMenuItem1, se o mesmo no estiver aparecendo clique no menu criado, d um duplo clique no JMenuItem1, para inserir o evento responsvel pela chamada do Form Clientes. Na janela de cdigo que se abre, procure o seguinte comando: private void jMenuItem1ActionPerformed Antes deste comando digite: Clientes FormCliente = new Clientes(); //instanciao do Formulrio Clientes Se tiver criado a Template com outro nome substitua o nome Clientes por este nome.

37 E dentro do mtodo, depois de // Add your handling code here: digite: FormCliente.show(); //exibio do Formulrio Clientes Compile e Execute. Repita os mesmos passos para criar o Form Veculos e para exibi-lo. Clique no Menu File New Next digite o Nome Veculos clique no boto Finish Mude o Layout e insira os componentes (JLabel e JTextField), v para o cdigo e modifique o comando System.exit(0) para setVisible(false) Volte para o Form SistLocao e d um duplo clique em JMenuItem2, antes do respectivo mtodo actionPerformed instancie o Form: Veculos FormVeiculo = new Veculos(); //instanciao do Form Dentro do mtodo digite o comando para exibio: FormVeiculo.show(); Compile e Execute. Seu Pequeno Sistema foi Criado

Applets Funcionamento e Estrutura

Assunto: Applets: Funcionamento e Estrutura Objetivo: escrever mini-aplicativos java que rodam na internet e intranet. Applets So pequenos programas Java que podem ser inseridos dentro de pginas HTML. Interagir com o usurio que a consulte Pode executar tarefas complexas, como realizar clculos e apresentar grficos, sons e imagens em movimento.

38 Applets: Funcionamento Para inserir uma applet numa pgina HTML, usamos a diretiva , que deve apresentar pelo menos trs parametros: code, width e height. Assim, a especificao mais simples tem a forma: [java applet]: nome da classe principal do programa Java AloPessoal.class [largura] e [altura]:indicam a largura e a altura em pixels da rea dentro da pgina reservada para a apresentao da applet. Uma applet deve conter ao menos uma classe pblica, e essa classe pblica deve estender a classe Applet. A classe Applet faz parte do package applet: import java.awt.*; //importao dos componentes import java.applet.*; //importao da classe Applet public class AloPessoal extends Applet { public void paint(Graphics g){ //mtodo para desenho g.drawString("Al Pessoal!", 100, 20); // desenha um texto } } Este programa deve ser compilado, e aps a depurao dos erros informado o arquivo gerado: .class, no arquivo html atravs do parmetro code (code = ArquivoJava.class) informado qual o arquivo Java a ser utilizado na pgina HTML. Arquivo Html (com um nome qualquer, Ex: Alo.html): Parmetros adicionais: - codebase: URL do diretrio que contm as classes compiladas (bytecodes) do applet - name: Um nome que identifica uma particular instncia de um applet dentro de uma pgina HTML (til para comunicao entre applets).

39 - align: especifica um alinhamento para a rea da applet dentro da pgina. Anlogo ao alinhamento de imagens. - alt: Texto a ser exibido na rea da applet durante o carregamento, ou na impossibilidade de carregar a applet. Applets: Estrutura A classe Applet define quatro mtodos bsicos para controlar a execuo e interao com o browser: a) init(): executado quando a applet e carregada ou recarregada adio de componentes, recebimento de parmetros de execuo e preparo da applet b) start(): executado aps o mtodo init ou ao ser recarregada deve ser utilizado quando necessrio assegurar alguma condio especial. c) stop(): executada quando o usurio muda de pgina permanecendo na memria, ou fecha o browser. d) destroy(): executada quando a applet for removida da memria. paint(), definido pela classe Component da AWT: atualiza a exibio da applet A maneira mais simples de se construir uma applet por meio do mtodo paint o contedo apresentado s depende desse mtodo. A combinao destes mtodos representa o ciclo de vida de uma applet.

Criando Applets no NetBeans

A criao de Applet utilizando o Netbeans uma tarefa simples, devendo ser criado apenas o programa Java, o Applet, porque a ferramenta cria automaticamente o corresponde arquivo HTML, com o mesmo nome do seu programa, contendo os cdigos para executar a pgina web. 1) Criar um Applet que permita ao usurio digitar dois nmeros reais e mostrar o resultado da soma destes: A criao de Applet no Netbeans feita atravs de Templates, possvel trabalhar com a Classe Applet do pacote AWT ou com a classe JApplet do pacote Swing.

40 O Exemplo que se segue, ser implementado utilizando o JApplet. Clique no menu File New Java GUI Form JApplet Form clique no Boto Next digite o nome Calculadora e clique no boto Finish. Antes de inserir os componentes modifique o Layout para NullI Layout , para poder organizar os componentes da maneira desejada. Clique com o boto direito do mouse, na janela no canto superior direito, em JApplet e selecione Null Layout Insira trs JLabel ( Nmero 1: e Nmero 2: ), dois JTextField, quatro JButton( Somar , Diminuir , Multiplicar , Dividir ). Para inserir um atalho para o boto, digite a letra desejada na propriedade Mnemonic A parte visual foi criada, falta os eventos dos botes. D um duplo clique boto Somar e digite: float op1,op2, result; // variveis auxiliares "pega" o nmero digitado e o converte para float op1=Float.parseFloat(jTextField1.getText()); op2=Float.parseFloat(jTextField2.getText()); result=op1+op2; //converte o resultado em String e exibe jLabel3.setText(String.valueOf("Resultado: " + result)); jTextField1.setText(" "); //Limpar o JTextField jTextField2.setText(" "); jTextField1.requestFocus(); //muda o foco para o JTextField 1 Compile e Execute. Observe que ao executar o programa o mesmo mostrado no Applet Viewer, um aplicativo do JDK construdo para auxiliar na implementao dos applets, e gera automaticamente o arquivo HTML com o mesmo nome do programa applet.

41 Para visualisar o arquivo HTML, clique no menu View FileSystem, e d um duplo clique no arquivo com o mesmo nome do programa, mas do tipo HTML Se desejar modifique a rea destinada a mostrar o applet no browser, modifique no arquivo HTML os valores dos cdigos WIDTH (Largura do Apllet) e HEIGHT( Altura). Ex: Para executar o arquivo, ou seja, abrir no browser basta executar (F6): Para implementar as operaes matemticas (eventos) dos outros botes, d um duplo clique no boto e digite o mesmo cdigo do boto soma e modificando apenas o sinal de soma para a operao desejada. Exemplo para o boto Subtrair float op1, op2, result; // variveis auxiliares "pega" o nmero digitado e o converte para float op1 = Float.parseFloat( jTextField1.getText() ); op2 = Float.parseFloat( jTextField2.getText() ); result = op1- op2;//converte o resultado em String e exibe jLabel3.setText( String.valueOf( "Resultado: " + result) ); jTextField1.setText(" "); //Limpar o JTextField jTextField2.setText(" "); jTextField1.requestFocus(); //muda o foco para o JTextField 1 Tambm possvel exibir os resultados das operaes utilizando um JOptionPane. 2) Crie um Applet que informa o valor do emprstimo, que calculado conforme o valor do saldo mdio digitado pelo usurio (at R$ 1000,00 zero, de R$ 1001 at 2500 30% do Saldo Mdio, acima de R$ 2500 50% do Saldo Mdio): Crie um Novo Programa: File New Java GUI Form JApplet digite o nome Emprstimo Finish Clique com o Boto direito do mouse no Form, selecione setLayout e clique em Null Layout .

42 Insira dois JLabel no Form, modificando as propriedade Text para Saldo Mdio e Valor do Emprstimo , insira um JTextField e um JButton, modifique a propriedade Text para Calcular . D um duplo clique no boto e digite os comandos: float saldo; //varivel auxiliar try{ //tratamento de erros do valores saldo = Float.parseFloat(jTextField1.getText()); // pega o valor digitado e converte //verificao dos valor digitado e do emprstimo que pode ser concedido if (saldo=1000) & (saldo2500) jLabel2.setText("Valor do Emprstimo: " + saldo * 0.5); }catch (Exception e){ //exibe mensagem caso no seja digitado um valor vlido jLabel2.setText("No um Valor Vlido"); } Compile e Execute.

Banco de Dados No NetBeans

Assunto: Acessando Bancos de Dados. Objetivo: criar programas que acessam Banco de Dados. Acessando Bancos de Dados

43 A comunicao de cdigo Java puro com Banco de dados uma tarefa muito difcil, devido a enorme quantidade de bancos de dados, existente no mercado, com linguagens proprietrias. A plataforma Java permite o acesso a banco de dados por meio de uma API (Application Programming Interface) chamada JDBC (Java Database Connectivity). uma interface entre a linguagem Java e outra linguagem que todos os bancos de dados suportam. O Objetivo da JDBC possibilitar o uso de dados existentes em SGBDR remotos. Utiliza o SQL (Structured Query Language), linguagem destinada s operaes dos SGBDR. Arquitetura muito parecida com o padro ODBC (Open DataBase Connectivity). A Aplicao para acessar um BD deve utilizar a API JDBC, contida no pacote java.sql. Por meio da classe DriverManager, seleciona-se o driver de acesso ao BD que ser utilizado.O driver passa a oferece uma interface padronizada para a Aplicao, implementando em Java ou de forma nativa o acesso ao BD. Instalao de uma fonte JDBC/ODBC em plataforma Windows: 1. Acessar o painel de controle e ativar o aplicativo Fonte de Dados ODBC; 2. Clicar no boto adicionar (DNS do usurio) para criar uma nova ponte de um banco de dados; 3. Selecionar Driver adequado (Driver do Microsoft Access, por exemplo) 4. Preencher a caixa de dilogo com um nome para a Fonte de Dados do BD e a localizao do servidor. 5. Clicar no boto Selecionar para definir o BD a ser usado. Podemos construir uma aplicao usando o seguinte roteiro: 1) Importar o pacote java.sql: import java.sql.*; 2) Carregar o driver de acesso ao BD : ( ponte JDBC-OBDC) Class.forName( sun.jdbc.odbc.JdbcObdcDriver ); 4) Obter uma conexo com o BD: (BD Access: IJPlanetas)

44 Connection conexo = DriverManager.getConnection( jdbc:odbc:IJPlanetas ); 5) Por meio da conexo realizada, devemos obter uma instncia de um objeto Statement, PreparedStatement ou CallableStatement, para passar comandos SQL ao BD: Statement stmt= conexo.createStatement(); 6. Criar objetos para executar operaes no BD (execute (String), executeQuery (String), ExecuteUpdate(String), executeBatch()): int reg =stmt.executeUpdate( delete from planeta where nome= Maria ); ResultSet rs = stmt.executeQuery( select nome from planeta ); 7. Algumas operaes retornam resultados do BD (um objeto Resultset conjunto de registros), os quais devemos exibir ou processar: while( rs.next() ) { //move o curso de registros String Nome=rs.getString( nome ); // obtm o valor do campo nome da tabela System.out.println(Nome); } 8. Quando no precisar mais dos objetos obtidos, libere-os: rs.close(); stmt.close(); 9. Aps todas as operaes encerre a conexo com BD: conexo.close(); Exemplos de mtodos de ResultSet: rs.absolute(3); //move cursor para linha rs.updateString( Nome , Maria ); //atualiza nome rs.updateRow(); //atualiza linha na tabela rs.moveToInserRow(); //insere nova linha rs.updateInt(2, 3535); //atualiza coluna 2

45 Principais Comandos SQL Segue exemplos dos principais comandos que sero utilizando em uma aplicao que realizar operaes em um Banco de Dados: Tabela Brasil Cidade Braslia Estado DF Pop 2.000.000 Sit Cheio

SELECT: - realiza consultas Select cidade, estado FROM Brasil WHERE pop > 1000; INSERT: - Insere um registro INSERT INTO Brasil (cidade, estado) VALUES ( Cid, Est ) UPDATE: - Modifica um registro UPDATE Brasil SET Sit = Cheio WHERE Pop > 1000; DELETE: - Excluir um registro DELETE FROM Brasil WHERE cidade = BSB

Construo de Aplicaes - Acessando um Banco de Dados Access

Este exemplo realiza uma consulta na tabela denominada Relao, com os campos Nome e Id. Vamos partir do princpio de que a ponte JDBC-OBDC j foi criada com o nome BDAccess. import java.sql.*; //pacote para trabalhar com BD public class LeBDAccess{ public static void main(String args[]){ try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//seleciona Driver conecta com BD

46 Connection con=DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); //objeto comandos SQL Statement stmt= con.createStatement(); //Comando SQL ResultSet rs=stmt.executeQuery("select * from Relacao"); //verifica se existem registros while(rs.next()){ // obtm o valor armazenado no campo Nome da tabela Relacao String nome=rs.getString("nome"); // obtm o valor arqmazenado no campo da Id int id=rs.getInt("id"); // imprime o contedo da varivel System.out.println("Nome:"+nome+ " Ident:"+id); } rs.close(); //fecha "ponte" con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros System.out.println( erro de conexo + e.getMessage()); // mensagem de erro } catch(ClassNotFoundException e){ System.out.println("Driver no encontrado"); } } }

47 JDBC no NetBeans

O NetBeans no possui ferramentas que permitam criar visualmente componentes, em um programa, para manipular os dados de uma tabela, a exemplo dos existentes em outras ferramentas, em outras Linguagens de programao. Para trabalhar com Banco de Dados preciso faz-lo via cdigo, que dever ser inserido dentro do mtodo actionPerformed de um JButton. Cria-se o Formulrio contendo os componentes visuais para mostrar, e manipular, os dados da tabela do Banco de Dados. Dentre estes componentes esto os botes ou menus, os quais sero os responsveis por executar os cdigos para realizar uma determinada operao, consulta, insero, alterao ou excluso em um BD. Depois de criada a parte visual, devem ser implementados os cdigos nos botes/menus: OBS: - Os exemplos que se seguem utilizam uma Fonte de Dados ODBC com o Nome: PBD_Nomes que representa uma conexo com um Banco de Dados Access, contendo uma Tabela com o nome: TabFicha , contendo os campos (Matricula Tipo Nmero/Chave Primria; Nome Tipo Texto) - Parte Visual do Programa: a) Cdigos para Inserir: try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con = DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt = con.createStatement(); //objeto comdo sql String CadNome = jTextField1.getText(); //obtm nome digitado int CadMat=Integer.parseInt( jTextField2.getText() ); stmt.executeUpdate( insert into TabFicha (Matricula, Nome) values (' " + CadMat + " ',' " + CadNome + " ' ) " );

48 JOptionPane.showMessageDialog( this, " Dados Salvos! "); con.close(); // fecha conexo com BD } catch( SQLException e){ //trata os erros JOptionPane.showMessageDialog(this, "Erro Cmdo SQL " + e.getMessage() ); } catch( ClassNotFoundException e){ JOptionPane.showMessageDialog( this, " Driver no encontrado " ); } b) Cdigos para Consultar que devem ser inseridos em um JButton/Menu: boolean consulta=true; //varivel auxiliar utilizada para informar se houve sucesso na consulta try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt= con.createStatement();//objeto comdo sql String ConsNome= jTextField1.getText(); ResultSet RS= stmt.executeQuery( "Select * from TabFicha where nome=' " + ConsNome + " ' "); while (RS.next()){ int Mat= RS.getInt("Matricula"); jTextField2.setText(String.valueOf( Matricula )); jTextField3.setText(RS.getString("Nome")); consulta=false; JOptionPane.showMessageDialog(this,"Dados Encontrados!");

49 } if (consulta) JOptionPane.showMessageDialog(this,"Dados No Encontrados!"); RS.close (); stmt.close(); con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL"+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); } c) Cdigos para Alterar: try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt= con.createStatement();//objeto comdo sql String ConsNome= jTextField1.getText(); int CadMat=Integer.parseInt(jTextField2.getText()); String CadNome=jTextField3.getText(); int registro = stmt.executeUpdate(" update TabFicha set Nome=' " +CadNome+ " ', Matricula=' "+CadMat+ " 'where Nome=' " + ConsNome + " ' "); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Alterados!");

50 else JOptionPane.showMessageDialog(this,"Dados No Alterados!"); stmt.close(); con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); } d) Cdigos para Excluir: try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt= con.createStatement();//objeto comdo sql String ExcNome= jTextField1.getText(); int registro=stmt.executeUpdate("delete from TabFicha where Nome=' " + ExcNome + " ' "); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Excluidos!"); else JOptionPane.showMessageDialog(this,"Dados no Excluidos!"); stmt.close(); con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros

51 JOptionPane.showMessageDialog(this,"Erro Cmdo SQL"+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); } NOTA:Antes de inserir os cdigos preciso importar os pacotes para trabalhar com Banco de Dados e exibir caixa de mensagens: Localize o cdigo de criao da classe. Ex: Public Class ... Antes deste comando insira os seguintes cdigos: import java.sql.*; import javax.swing.*; Exemplo Completo Crie uma aplicao para cadastrar a Matricula e os Nomes dos Funcionrios de uma Empresa. 1. Clique no Menu File New Selecione Java GUI Forms Jframe Forms clique no boto Next. Na janela que se abre, no campo Name, digite SistCadFunc e clique no Boto Finish. 2. Modifique o Layout do JFrame para AbsoluteLayout e insira os seguintes componentes: dois JLabel (Nome e Matricula), dois JTextField e um JButton (Salvar) 3. A parte visual esta construda, falta o cdigo para salvar os dados. 4. Abra o Access e crie um BD (BDCadastro) com uma Tabela (TabFicha) com os campos: Matricula (Tipo Numrico/Chave Primria) e Nome Tipo Texto. 5. Devemos criar a Ponte JDBC/ODBC: abra o Painel de Controle Ferramentas Administrativas Fontes de Dados ODBC clique no Boto Add Selecione o Driver p/ BD Access

52 clique no boto Concluir no campo Nome da Fonte de Dados digite PBD-Nomes clique no boto Selecionar Procure o BD criado (BDCadastro) e clique no Boto OK 6. Criado o BD e a Ponte ODBC, volte para a sua aplicao no NetBeans e d um duplo clique no JButton (Salvar) para codificar a conexo: Depois de private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { , digite: try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con = DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt = con.createStatement(); //objeto comdo sql String CadNome = jTextField1.getText(); //obtm nome digitado int CadMat=Integer.parseInt( jTextField2.getText() ); stmt.executeUpdate("insert into TabFicha (Matricula,Nome) values ('" + CadMat + "','" + CadNome + "')" ); JOptionPane.showMessageDialog( this, " Dados Salvos! "); con.close(); // fecha conexo com BD } catch( SQLException e){ //trata os erros JOptionPane.showMessageDialog(this, "Erro Cmdo SQL " + e.getMessage() ); } catch( ClassNotFoundException e){ JOptionPane.showMessageDialog( this, " Driver no encontrado " ); } 7. Compile Execute.

53 8. Realizando operaes de Consulta, Alterao e Excluso em BD: Insira trs Botes para executar as operaes restantes no Banco de Dados (Consulta, Alterao e Excluso), um JLabel, para exibir o Texto Nome para Consulta/Excluso , supondo que estas operaes sero feitas atravs do campo Nome , e insira tabm um JTextField para p usurio poder digitar o Nome , ou crie um novo Form contendo os JLabel, JTextField , e JButton, sendo que o mesmo dever ser chamado por outro Form atravs de um JMenurBar. Basta dar um duplo clique no boto desejado e inserir o respectivo cdigo para a respectiva operao: Consultar boolean consulta=true; try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt= con.createStatement();//objeto comdo sql String ConsNome= jTextField1.getText(); ResultSet RS= stmt.executeQuery("Select * from TabFicha where nome='" + ConsNome + "' "); while (RS.next()){ int Mat= RS.getInt("Matricula"); jTextField2.setText(String.valueOf(Mat)); jTextField3.setText(RS.getString("Nome")); consulta=false; JOptionPane.showMessageDialog(this,"Dados Encontrados!"); }

54 if (consulta) JOptionPane.showMessageDialog(this,"Dados No Encontrados!"); RS.close (); stmt.close(); con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL "+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); } Alterar: try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt= con.createStatement();//objeto comdo sql String ConsNome= jTextField1.getText(); int CadMat=Integer.parseInt(jTextField2.getText()); String CadNome=jTextField3.getText(); int registro = stmt.executeUpdate("update TabFicha set Nome='" +CadNome+ "', Matricula='"+CadMat+ "'where Nome='" + ConsNome + "' "); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Alterados!"); else JOptionPane.showMessageDialog(this,"Dados No Alterados!"); stmt.close();

55 con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL"+e.getMessage()); } catch(ClassNotFoundException e){ JOptionPane.showMessageDialog(this,"Driver no encontrado"); } Excluir: try{ //tratamento de erros Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//busca Driver //conecta no BD Connection con=DriverManager.getConnection("jdbc:odbc:PBDNomes","",""); Statement stmt= con.createStatement();//objeto comdo sql String ExcNome= jTextField1.getText(); int registro=stmt.executeUpdate("delete from TabFicha where Nome='" + ExcNome + "'"); if (registro!=0) JOptionPane.showMessageDialog(this,"Dados Excluidos!"); else JOptionPane.showMessageDialog(this,"Dados no Excluidos!"); stmt.close(); con.close(); //fecha conexo com BD } catch(SQLException e){ //trata os erros JOptionPane.showMessageDialog(this,"Erro Cmdo SQL"+e.getMessage()); } catch(ClassNotFoundException e){

56 JOptionPane.showMessageDialog(this,"Driver no encontrado"); } Compile Execute. OBS: Como os comandos de conexo com o Banco de Dados esto se repetindo, os mesmos poderiam ser implementados dentro de uma funo e serem executados atravs de uma chamada desta funo quando se desejar estabelecer uma conexo com o banco de dados para realizar uma determinada operao em suas tabelas, diminuindo a quantidade de cdigo a ser digitado.

APLICATIVO COMERCIAL(Linguagem de programao Java utilizando o Netbeans 5.5.1) O seguinte exemplo foi desenvolvido a partir de discusses em sala de aula e diversas pesquisas, contudo, seu contedo expresso em cdigos que devem ser bem analisados para um melhor desenvolvimento do curso. MQUINA REGISTRADORA Primeiramente crie dois formulrios, no nosso exemplo, utilizamos tela1 e tela2. Para possibilitar o acesso de um formulrio a outro insira as seguintes linhas de comandos tela2 frmdois=new tela2() aps a seo Public Class. Para chamar o formulrio insira os comandos no boto do primeiro formulrio frmdois.show();

57

Crie os botes e caixas de dilogos, no se preocupe com as figuras, as colocaremos posteriormente. Para efetuar as adies coloque no boto adio os seguintes comandos private void btntrocoActionPerformed(java.awt.event.ActionEvent evt) { recebido=Double.parseDouble(jTextField6.getText()); troco=total-recebido; r=String.valueOf(recebido); tr=String.valueOf(troco); jTextField7.setText(tr); jTextField1.requestFocus(); saldo=total+saldo; s=String.valueOf(saldo); jTextField8.setText(s); total=0; subtotal=0; quantidade=0; valor=0; jTextArea1.setText(" R$ "+jTextArea1.getText()+t+" Recebido R$ "+r+"Troco R$ "+tr+"\n");

58

No boto resultado insira os cdigos: recebido=Double.parseDouble(jTextField6.getText()); troco=total-recebido; r=String.valueOf(recebido); tr=String.valueOf(troco); jTextField7.setText(tr); jTextField1.requestFocus(); saldo=total+saldo; s=String.valueOf(saldo); jTextField8.setText(s); total=0; subtotal=0; quantidade=0; valor=0; jTextArea1.setText(" R$ "+jTextArea1.getText()+t+" Recebido R$ "+r+"Troco R$ "+tr+"\n"); }

Para calcular o troco insira:

59 recebido=Double.parseDouble(jTextField6.getText()); troco=total-recebido; r=String.valueOf(recebido); tr=String.valueOf(troco); jTextField7.setText(tr); jTextField1.requestFocus(); saldo=total+saldo; s=String.valueOf(saldo); jTextField8.setText(s); total=0; subtotal=0; quantidade=0; valor=0; jTextArea1.setText(" R$ "+jTextArea1.getText()+t+" Recebido R$ "+r+"Troco R$ "+tr+"\n"); }

No boto finalizar insira:

jTextField6.requestFocus();

60

Para declararmos as variveis que possibilitaram a resoluo dos clculos, iremos declara-las de forma generalizada para todo o formulrio e no Private(privada), para isto declaramos as seguintes variaveis logo acima da ultima seo public static :

double subtotal,total,valor,recebido,troco,saldo=0; // Variveis do tipo real int codigo,quantidade; // Variveis do tipo interira String produto,q,v,c,t,tr,r,s; // Variveis do tipo caracteres ( strings)

61 O JButton Resultado com o smbolo de + (mais) servir para adicionar os valores das compras e armazenar o valor do cdigo e demais informaes, para isto coloque as seguintes linhas de comandos : private void btnresultadoActionPerformed(java.awt.event.ActionEvent evt) { codigo=Integer.parseInt(jTextField1.getText()); //Converte String em int quantidade=Integer.parseInt(jTextField3.getText()); produto=jTextField2.getText(); // produto recebe o valor do 2 JText //Converte String para real valor=Double.parseDouble(jTextField4.getText()); subtotal=quantidade*valor; //efetua a multip. das variveis envolvidas total=subtotal+total; // Armazena os subtotais c=String.valueOf(codigo); //Converte nmeros em textos v=String.valueOf(valor); q=String.valueOf(quantidade); t=String.valueOf(total); jTextField5.setText(t); //Imprime o valor do total jTextField1.setText(""); // Deixa em brando os JTexts jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); jTextField6.setText("");

62 jTextField7.setText(""); jTextField1.requestFocus(); // Tranfere o cursor para o 1 JText } // Fim do cdigo

O JButton finalizar servir para encerrar o processo de novas compras de produtos e levar o processo para seus estgio de valor recebido (JTextField6).

// Transfere o cursor para jTextField6. jTextField6.requestFocus();

O JButton com o smbolo de uma cdula servir para calcular o valor do troco, alm de calcular o saldo total do comerciante e preparar o cursor para uma nova rotina de vendas, para isto coloque as seguintes linhas de comando:

private void btntrocoActionPerformed(java.awt.event.ActionEvent evt) { // Converte texto para nmeros recebido=Double.parseDouble(jTextField6.getText()); troco=total-recebido; // Calcula o troco r=String.valueOf(recebido); // Converte nmero para texto tr=String.valueOf(troco); jTextField7.setText(tr); // Emite o valor do troco jTextField1.requestFocus();

63 saldo=total+saldo; // Incrementa o saldo s=String.valueOf(saldo); // Converte nmero para texto jTextField8.setText(s); // Emite o vlor do saldo total=0; // Zera o valor da variavel subtotal=0; quantidade=0; valor=0; // Comando de impreso no componente JTextArea1 jTextArea1.setText(" R$ "+jTextArea1.getText()+t+" Recebido R$ "+r+"Troco R$ "+tr+"\n"); }

Qualquer dvida envie um E-mail : arthurnewblackcrew.bol.com.br

CALCULADORA VISUAL No nosso exemplo utilizamos 21 JButtons, mas no se assuste 10 deles sero utilizados somente para possibilitar um teclado virtual, alm do botes utilizaremos 7 JTextFields para exibir valores, coloque estes objetos no formulrio e altere as seguintes propriedades Text dos JButton como na seguinte figura e deixe em branco a propriedade do JTextFields, renomeie como achar melhor. Insira as seguintes linhas de comando:

64

Tente deixar a parte visual igual a esta.

private voidbtnexpoenteActionPerformed(java.awt.event.ActionEvent evt) { num1=Double.parseDouble(jText.getText()); // Armazena o 1 valor num1=num1*num1; primeiro=String.valueOf(num1); R=String.valueOf(num1); jText.setText(R); if (contador==0) jText1.setText(primeiro+"Exp"+"2 = "+R);

65 if (contador==1) jText2.setText(primeiro+"Exp"+"2 = "+R); if (contador==2) jText3.setText(primeiro+"Exp"+"2 = "+R); if (contador==3) jText4.setText(primeiro+"Exp"+"2 = "+R); if (contador==4) jText5.setText(primeiro+"Exp"+"2 = "+R); if (contador==5) { jText6.setText(primeiro+"Exp"+"2 = "+R); contador=-1; } contador=contador+1; jText.requestFocus(); }

private void btnreiniciarActionPerformed(java.awt.event.ActionEvent evt) { jText.setText("");

66 jText1.setText(""); jText2.setText(""); jText3.setText(""); jText4.setText(""); jText5.setText(""); jText6.setText(""); num1=0; resul=0; contador=0; jText.requestFocus(); }

private void btnmediaActionPerformed(java.awt.event.ActionEvent evt) { jTextvirtual.setText(jText.getText()); /* Componente invisvel*/ jText.setText(""); jText.requestFocus(); jLabsinal.setText("M"); /*Componente invisivel que serve para identificar a operao*/ } private void btnlimparActionPerformed(java.awt.event.ActionEvent evt)

67 { jText.setText(""); // Limpa o visor da calculadora jText.requestFocus(); // Passa o foco para o visor da calculadora num1=0; resul=0; }

private void btnporcentagemActionPerformed(java.awt.event.ActionEvent evt) { num1=Double.parseDouble(jText.getText()); // Armazena o 1 valor soma=String.valueOf(resul); if (jLabsinal.getText()=="+") // Se a operao for de adio { p=(resul*num1)/100; // Valor porcentual resul=resul+p; // Valor adicionado com a porcentagem } if (jLabsinal.getText()=="-") { p=(resul*num1)/100; resul=resul-p;

68 } if (jLabsinal.getText()=="x") { p=(resul*num1)/100; resul=resul*p; } if (jLabsinal.getText()=="") // Se a operao for de diviso { if (num1==0) // Se o denoiminador for invlido { // Mensagem de erro jOptmensagem.showMessageDialog(this,"DENOMINADOR NO PODE SER IGUAL A ZERO"); jText.requestFocus(); // Passa o foco para o visor da calculadora } else // Se o denominador for vlido { p=(resul*num1)/100; // Calcula o valor porcentual resul=resul/p; } } //Divide o 1 valor pelo seu porcentual correspondente

69 R=String.valueOf(resul); primeiro=String.valueOf(num1); if (contador==0) jText1.setText(soma+jLabsinal.getText()+primeiro+"% = "+R); if (contador==1) jText2.setText(soma+jLabsinal.getText()+primeiro+"% = "+R); if (contador==2) jText3.setText(soma+jLabsinal.getText()+primeiro+"% = "+R); if (contador==3) jText4.setText(soma+jLabsinal.getText()+primeiro+"% = "+R); if (contador==4) jText5.setText(soma+jLabsinal.getText()+primeiro+"% = "+R); if (contador==5) { jText6.setText(soma+jLabsinal.getText()+primeiro+"% = "+R); contador=-1; } contador++; jText.setText(""); jText.requestFocus();

70 }

private void btnsubtracaoActionPerformed(java.awt.event.ActionEvent evt) { num1=Double.parseDouble(jText.getText()); // Armazena o 1 valor jLabsinal.setText("-"); /*Componente invisivel*/ soma=String.valueOf(resul); resul=resul-num1; R=String.valueOf(resul); primeiro=String.valueOf(num1); if (contador==0) jText1.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==1) jText2.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==2) jText3.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==3) jText4.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==4) jText5.setText(soma+jLabsinal.getText()+primeiro+" = "+R);

71 if (contador==5) { jText6.setText(soma+jLabsinal.getText()+primeiro+" = "+R); contador=-1; } contador++; jText.setText(""); jText.requestFocus(); }

private void btnmultiplicacaoActionPerformed(java.awt.event.ActionEvent evt) { num1=Double.parseDouble(jText.getText()); // Armazena o 1 valor jLabsinal.setText("x"); if (resul==0) { resul=1; } soma=String.valueOf(resul); resul=num1*resul;

72 R=String.valueOf(resul); primeiro=String.valueOf(num1); if (contador==0) jText1.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==1) jText2.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==2) jText3.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==3) jText4.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==4) jText5.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==5) { jText6.setText(soma+jLabsinal.getText()+primeiro+" = "+R); contador=-1; } contador++; jText.setText(""); jText.requestFocus();

73 }

private void btndivisoActionPerformed(java.awt.event.ActionEvent evt) { num1=Double.parseDouble(jText.getText()); // Armazena o 1 valor jLabsinal.setText(""); soma=String.valueOf(resul); if (num1==0) // Se o denominador for invlido { jOptmensagem.showMessageDialog(this,"DENOMINADOR NO PODE SER IGUAL A ZERO!"); jText.setText(soma); jText.requestFocus(); } resul=resul/num1; R=String.valueOf(resul); primeiro=String.valueOf(num1); if (contador==0) jText1.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==1) jText2.setText(soma+jLabsinal.getText()+primeiro+" = "+R);

74 if (contador==2) jText3.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==3) jText4.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==4) jText5.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==5) { jText6.setText(soma+jLabsinal.getText()+primeiro+" = "+R); contador=-1; } contador++; jText.setText(""); }

private void btnresultadoActionPerformed(java.awt.event.ActionEvent evt) { soma=String.valueOf(resul); num1=Double.parseDouble(jText.getText()); // Armazena o 1 valor if (jLabsinal.getText()=="+") // Se a operao for de adio resul=num1+resul;

75 if (jLabsinal.getText()=="-") // Se a operao for de diviso resul=(resul-num1); if (jLabsinal.getText()=="x") // Se a operao for de multiplicao resul=num1*resul; if (jLabsinal.getText()=="") // Se a operao for de diviso resul=resul/num1; if (jLabsinal.getText()=="M") // Se a operao for clculo de mdias resul=(num1+num2)/2; // Efetua o calculo da mdia entre os dois valores mencionados R=String.valueOf(resul); primeiro=String.valueOf(num1); if (contador==0) jText1.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==1) jText2.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==2) jText3.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==3) jText4.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==4) jText5.setText(soma+jLabsinal.getText()+primeiro+" = "+R);

76 if (contador==5) { jText6.setText(soma+jLabsinal.getText()+primeiro+" = "+R); contador=-1; } contador++; jText.setText(""); jText.requestFocus(); }

private void btnadicaoActionPerformed(java.awt.event.ActionEvent evt) { num1=Double.parseDouble(jText.getText()); // Armazena o 1 valor soma=String.valueOf(resul); resul=num1+resul; R=String.valueOf(resul); primeiro=String.valueOf(num1); jLabsinal.setText("+"); /*Componente invisivel*/ if (contador==0) jText1.setText(soma+jLabsinal.getText()+primeiro+" = "+R);

77 if (contador==1) jText2.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==2) jText3.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==3) jText4.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==4) jText5.setText(soma+jLabsinal.getText()+primeiro+" = "+R); if (contador==5) { jText6.setText(soma+jLabsinal.getText()+primeiro+" = "+R); contador=-1; } jText.setText(""); jText.requestFocus(); contador++; } Qualquer dvida envie um E-mail : arthurnewblackcrew.bol.com.br CONTROLADOR DE MENSALIDADES E CONVERSOR DE VELOCIDADE

78

O seguinte exemplo foi desenvolvido com trs Frames, o primeiro utiliza trs JButtons e servir para acessar outros formulrios