Introduo e Reviso de Conceitos de Programao voltados para a Linguagem
JAVA
Prof. Andr Camargo www. andrecamargo.hd1.com.br
VERSO 1.5
Santiago, fevereiro de 2013.
INSTITUTO ESTADUAL DE EDUCAO PROFESSOR ISAAS TCNICO EM INFORMTICA- QUALIFICAO EM PROGRAMAO
P1
Pgina 2 de 30
ndice NDICE .................................................................................................................................... 2 REVISO DE PROGRAMAO DESKTOP (P1)............................................................. 3 1. O QUE UM PROGRAMA? ............................................................................................. 3 1.1. COMO UM PROGRAMA EXECUTADO?....................................................................................... 3 1.2. QUAL A ESTRUTURA BSICA DE UM PROGRAMA?....................................................................... 4 2. TIPOS DE DADOS ............................................................................................................. 4 3. DEFINIO DE VARIVEIS ........................................................................................... 5 3.1. EXPRESSES ARITMTICAS .......................................................................................................... 5 3.2. Atribuies .................................................................................................................................. 6 4. O QUE UM ALGORITMO? ............................................................................................ 6 4.1. COMO CRIAR ALGORITMOS? ....................................................................................................... 7 PARA CRIARMOS OS ALGORITMOS, PRECISAMOS SEGUIR ALGUNS PASSOS. . 7 5. USANDO JOPTIONPANE ................................................................................................. 7 5.1. Lendo Informaes do Teclado utilizando JOptionPane: .............................................................. 7 CONTEDO 3 MDULO ..................................................................................................... 8 6. TRABALHANDO COM INTERFACE GRFICA ........................................................... 8 6.1. Montando o primeiro sistema com interface: .............................................................................. 9 7. COMPARAES ............................................................................................................. 11 8. CARACTERES ESPECIAIS ............................................................................................ 11 9. COMANDOS DE DECISO ............................................................................................. 12 9.1. SE ENTO / IF ... THEN ............................................................................................................... 12 10. LOOP(REPETIO) .................................................................................................... 13 P1
Pgina 3 de 30
10.1. Looping For ............................................................................................................................. 13 11. COMPONENTES DA INTERFACE GRFICA ......................................................... 13 11.1. Jframe Janela ........................................................................................................................ 13 11.2. Jlabel Rtulo ......................................................................................................................... 14 11.3. Jbutton Boto ....................................................................................................................... 16 11.4. JtextField Campo de Texto .................................................................................................... 18 11.5. Jcombobox Campo de Seleo .............................................................................................. 19 11.6. JradioButton Boto de Opo ............................................................................................... 21 11.7. Colocando a data no Sistema ................................................................................................... 23 11.8. Criando um boto Sair ............................................................................................................. 23 12. VALIDAO DE CAMPOS DO FORMULRIO ...................................................... 23 12.1. Modelo 1 ................................................................................................................................. 23 12.2. Modelo 2 ................................................................................................................................. 26
Reviso de Programao Desktop (P1) 1. O QUE UM PROGRAMA? Programa um software. o roteiro que orienta o computador, mostrando-lhe a seqncia de operaes necessrias para executar uma determinada tarefa. Um programa uma seqncia de instrues que dirigem a Unidade Central de Processamento na execuo de alguma tarefa. Diz-se que um programa composto por uma srie de comandos ou instrues. 1.1. COMO UM PROGRAMA EXECUTADO? O programa executado, seguindo a ordem lgica, continua de como ele foi escrito, semelhante a ordem de ler um livro, comeamos a ler na primeira linha da primeira pgina e vamos lendo o livro at o seu final. P1
Pgina 4 de 30
Os programas so executados atravs de um mtodo principal, denominado mtodo main, abaixo segue um exemplo de uma classe Java, com o seu mtodo main.
No netbeans, o que identifica uma classe java que possui um mtodo principal (mtodo main) o play verde sobre o arquivo.
1.2. QUAL A ESTRUTURA BSICA DE UM PROGRAMA? Todos os programas necessitam de um mtodo principal, so executados a partir desse mtodo e seguem toda a lgica que foi inserida nesse mtodo, linha a linha. Somente deve existir um mtodo principal em um programa para ser executado.
2. TIPOS DE DADOS int = nmeros inteiros de -2.147.483.648 e 2.147.483.647. long= nmeros inteiros de -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 float= numeros com virgula e casas decimais (1,1) (1) (-1,67) String= palavras (Programao) char= um caracter(uma letra) (A) (B)
P1
Pgina 5 de 30
3. Definio de Variveis float salario; int idade; String nome; boolean resposta; (somente aceita valores verdadeiro e falso, (true e false)) VETOR String strArray[] = new String[10]; Esse vetor pode guardar 10 informaes do tipo string, tambm pode ser de qualquer tipo de dado; Para guardar dados no vetor precisamos atribuir as posies que estamos salvando. strArray[0] = oi; strArray[1] = ab;
strArray[9] = c;
3.1. EXPRESSES ARITMTICAS Expresses aritmticas so aquelas que apresentam como resultado um valor numrico que pode ser um nmero inteiro ou real, dependendo dos operandos e operadores. Os operadores aritmticos disponveis em a-- esto mostrados na Tabela a seguir. Operador Descrio + Soma - Subtrao * Multiplicao P1
Pgina 6 de 30
/ Diviso % Mdulo (Resto da diviso inteira) ^ Potncia 3.2. Atribuies Variveis podem ser atribudas em forma de expresses como: int x, y, z; x = y = z = 0; No exemplo as trs variveis recebem o valor 0; Operadores de Atribuio: Expresso Significado x += y x = x + y x -= y x = x y x *= y x = x * y x /= y x = x / y 3.2.1. Incrementos e decrementos Java tambm possui incrementadores e decrementadores : y = x++; y = --x; As duas expresses do resultados diferentes, pois existe uma diferena entre prefixo e sufixo. Quando se usa os operadores ( x++ ou x-- ), y recebe o valor de x antes de x ser incrementado, e usando o prefixo ( ++x ou x ) acontece o contrario, y recebe o valor incrementado de x. 4. O QUE UM ALGORITMO? Para solucionar qualquer problema utilizando o computador primeiro precisamos descrev-lo de uma forma clara e precisa. preciso encontrar uma sequncia de passos que permitam que o problema seja resolvido. Esta sequncia de passos chamada de algoritmo, e deve descrever todo o comportamento esperado durante a execuo. (CRU 2001) Algoritmo a sequncia de passos necessrios para efetuar uma tarefa. Ex: Ler 2 valores e calcular a soma e exibir o resultado. INICIO float num1,num2,soma; num1=Informe o valor 1; P1
Pgina 7 de 30
num2=Informe o valor 2; soma=(num1+num2); o valor da soma +soma; FIM
Atividade: 1. Escrever esse algoritmo acima na linguagem Java:
4.1. COMO CRIAR ALGORITMOS? Para criarmos os algoritmos, precisamos seguir alguns passos. Quem so as variveis: Quais informaes devem ser solicitadas para o usurio: Processamento: Exibir resposta:
5. Usando JOptionPane Exibindo Mensagens; JOptionPane.showMessageDialog(null, JAVA"); JOptionPane.showMessageDialog(null, Seu nome "+varivel);
5.1. Lendo Informaes do Teclado utilizando JOptionPane: 5.1.1. Tipo String String cidade; cidade = JOptionPane.showInputDialog(null, "Informe o nome de sua cidade:");
P1
Pgina 8 de 30
5.1.2. Tipo Int String ler; int idade; ler= JOptionPane.showInputDialog(null, " Informe a sua idade"); idade=Integer.parseInt(ler);
5.1.3. Tipo float String ler; float salario; ler= JOptionPane.showInputDialog(null," Informe o Salrio"); salario=Float.parseFloat(ler);
Obs: Tanto para ler nmeros do tipo int quanto para ler do tipo float necessrio primeiro ler o valor em uma string e depois efetuar a converso para o tipo de dado, a definio da varivel ler, necessrio somente uma vez, quando vamos ler mais nmeros exemplo: String ler; float salario; int idade; ler= JOptionPane.showInputDialog(null,"Informe o Salrio"); salario=Float.parseFloat(ler); ler= JOptionPane.showInputDialog(null,"Informe idade"); idade=Float.parseFloat(ler); Contedo 3 Mdulo 6. Trabalhando com interface grfica Criando o primeiro projeto com Interface: Para criar o projeto: Ir em : Arquivo/Novo Projeto escolher Java e ao lado aplicativo java e escolher o nome do projeto. Verificar se o projeto correto est sendo executado
O Projeto deve estar em NEGRITO, se no estiver: Clicar com o boto direito do mouse sobre o projeto e definir como projeto principal. P1
Pgina 9 de 30
Aps criar o um novo projeto necessrio criar um novo arquivo chamado JFrame, que a primeira janela do sistema. Clicar sobre o pacote com o boto direito do mouse, ir em novo e escolher a opo Formulrio JFrame.
Sistema de SOMA: Nome do projeto e est definido como projeto principal Sistema.de.soma: Nome do pacote onde criamos os arquivos Janela Principal: Formulrio Jframe , arquivo que pode ser executado SistemadeSOMA: Classe principal, arquivo que vamos apagar: Aps criarmos o segundo arquivo, este que contm a parte de projeto, necessrio apagar o primeiro arquivo. Aps criar esse arquivo necessrio fazer o programa inici-lo: Para o programa iniciar esse novo arquivo, precisamos clicar sobre o nome do projeto com o boto direito do mouse, depois escolher a opo propriedades, nessa janela que ser aberta necessrio encontrar a opo executar, e depois escolher ao lado de classe principal o boto procurar e apontar para o arquivo novo que vai ser executado pelo projeto.
6.1. Montando o primeiro sistema com interface: Ler 2 valores e calcular a soma e exibir o resultado. INICIO float num1,num2,soma; num1=Informe o valor 1; num2=Informe o valor 2; soma=(num1+num2); o valor da soma +soma; FIM P1
Pgina 10 de 30
Utilizando Rtulo e caixa de texto e boto: Na interface o sistema deve ficar assim:
Conhecendo os componentes bsicos da interface. Como retirar valor dos componentes: .getText() Retiramos o texto do componente. .setText() Atribumos texto ao componente.
Implementar o cdigo do algoritmo para a ao do boto. float num1,num2,soma; num1= Float.parseFloat(jTextFieldNum1.getText()); //Nesse momento do evento do boto salvar estamos retirando da interface o valor que existe dentro do componente jTextFieldNum1, e passando para a varivel numrica num1;
Atividade: Finalizar a lgica e exibir a resposta dentro da caixa de texto do resultado: Dica: jTextFieldResultado.setText(soma+ "");
Atividades Prticas: 1. Ler dois valores e multiplic-los e exibir o resultado; 2. Ler o numero de horas, o valor da hora trabalhada, calcular o salrio. 3. Ler o nome e cidade de uma pessoa e informar uma mensagem: Nome sua cidade cidade. Andr sua cidade Santiago. 4. Calcular a Frmula de Bhaskara
P1
Pgina 11 de 30
7. Comparaes Java possui vrias expresses para testar igualdade e magnitude. Todas as expresses retornam um valor booleano (true ou false). (V ou F) Utilizasse a expresso if. 7.1.1. Operadores de comparao Operador Significado Exemplo == Igual x == 3 != Diferente ( No igual) x != 3 < Menor que x < 3 > Maior que x > 3 <= Menor ou igual x <= 3 >= .equals(teste) Maior ou igual Comparao entre String x >= 3 nome.equals(java)
7.1.2. Operadores lgicos Operador Significado && Operao lgica E (AND) || Operao lgica OU (OR) ! Negao lgica & Comparao bit-a-bit E (AND) | Comparao bit-a-bit OU (OR) ^ Comparao bit-a-bit OU-Exclusivo (XOR) 8. CARACTERES ESPECIAIS Caracter Significado \n Nova Linha P1
Pgina 12 de 30
\t Tab \b Backspace \r Retorno do Carro \f Formfeed (avana pgina na impressora) \\ Barra invertida \ Apstrofe \ Aspas
9. COMANDOS DE DECISO Os comandos de deciso ou desvio fazem parte das tcnicas de programao que conduzem as estruturas de programas que no so totalmente seqenciais. Com as instrues de SALTO ou DESVIO pode-se fazer com que o programa proceda de uma ou outra maneira, de acordo com as decises lgicas tomadas em funo dos dados ou resultados anteriores. As principais estruturas de deciso so: Se Ento, Se ento Seno e Caso Selecione 9.1. SE ENTO / IF ... THEN A estrutura de deciso SE/IF normalmente vem acompanhada de um comando, ou seja, se determinada condio for satisfeita pelo comando SE/IF ento execute determinado comando. Imagine um algoritmo que determinado aluno somente estar aprovado se sua mdia for maior ou igual a 5.0, veja no exemplo de algoritmo como ficaria. SE MEDIA >= 5.0 ENTO ALUNO APROVADO
Em Java if (media>=5) { // comparando numeros ao aluno Aprovado }else{ ao aluno No Aprovado }
if (nome.equals(nome)){ // comparando palavras ao nome Igual }else{ ao nome Diferente }
Atividades: 2. Ler dois nomes e descobrir se so iguais;
P1
Pgina 13 de 30
3. Ler dois valores e calcular a media, e exibir aprovado quando o aluno tiver mdia maior que 5 e reprovado quando a mdia for inferior.
4. Criar um sistema de login, lendo nome e senha e exibindo a mensagem voc est logado, se a senha e o login estiverem certos. Usar campo de texto. 10. Loop(Repetio) So comandos utilizados para criar estruturas de repetio, dessa maneira possvel executar as mesmas operaes para um numero infinito ou finito de usurios, ou de valores. 10.1. Looping For O loop em Java tem esta sintaxe: for(int i=0; i<10;i++){ JOptionPane.showMessageDialog(null, JAVA"); } Este comando utilizado para a repetio de blocos de comandos, ou instrues, durante os cdigos trabalhados durante o mdulo utilizaremos esta tcnica de programao.
11. Componentes da Interface Grfica 11.1. Jframe Janela Jframe uma janela. Um sistema pode conter uma janela ou vrias. Para conter vrias janelas o sistema precisa de uma JanelaPrincipal que vai gerenciar o sistema e possuir o menu, cada opo do menu aciona uma nova janela(Jframe) Para acionar essa nova janela precisamos aps criar esse novo Jframe colocar o cdigo abaixo para cada janela nova a ser acionada. PaginaInicial form= new PaginaInicial(); form.setVisible(true); Onde o mesmo padro de cdigo deve ser seguido para todos os novos jframe, trocando apenas o nome da janela (Parte em Vermelho) Na primeira linha estamos criando um novo objeto dessa classe java. E na segunda linha estamos atribudo o valor verdadeiro a propriedade visibilidade desse componente. P1
Pgina 14 de 30
11.1.1. Jframe ocupando toda a tela. Para utilizar o Jframe e ao ser instanciado para iniciar a sua execuo ele ocupar todo o espao da tela, necessrio ir em cdigo fonte e encontrar o texto initcomponentes(); E colocar o cdigo abaixo. setExtendedState(MAXIMIZED_BOTH);
11.1.2. Para centralizar um Jframe. Para utilizar o Jframe e ao ser instanciado para iniciar a sua execuo ele aparecer centralizado na tela, necessrio ir em cdigo fonte e encontrar o texto initcomponentes(); E colocar o cdigo abaixo. setLocationRelativeTo(null);
11.1.3. Trocar o cone do Jframe Para trocar o cone da janela necessrio ir em cdigo fonte e encontrar o texto initcomponentes(); Substituindo o nome da imagem que no caso clientenovo.png dentro do pacote imagens. E colocar o cdigo abaixo. java.net.URL url = getClass().getResource("/imagens/clientenovo.png"); java.awt.Image im = java.awt.Toolkit.getDefaultToolkit().getImage(url); setIconImage(im);
11.2. Jlabel Rtulo O JLabel um componente muito utilizado em Java para a criao de formulrios onde necessrio a insero de textos ou imagens. A insero desse componente no Netbeans possvel aps a criao de um novo JPanel ou Jframe, atravs da opo rtulo na janela paleta. Aps a insero desse componente no netbeans necessrio trocar o nome desse componente para ficar fcil de localiz-lo quando estivermos escrevendo cdigo. Uma boa prtica de programao utilizar o nome do componente e acrescentar ao final o nome dado contedo que ir guardar no formulrio. Ex: Para um jLabel que vai solicitar o nome do cliente. jLabelInformeNome ou jLabel_InformeNome Existem diversas opes de personalizao desse componente basta clicar sobre o componente com o boto direito e selecionar a opo Propriedades, vamos a algumas delas: Font: Definir fonte tamanho e estilo de texto. P1
Pgina 15 de 30
Background: Cor de fundo. Forenground: Cor do texto. horizontalAlignment: Alinhamento do texto dentro do componente. Icon: imagem que vai aparecer sobre o componente. Text: texto que est dentro do campo. toolTipText: texto que aparece sobre cursor quando posicionado sobre o componente. Cursor: define o cursor que aparece sobre o componente. Border: define a borda para o componente. Visible: essa propriedade determina se o boto visvel ou invisvel, pode ser facilmente utilizado quando um determinado tipo de usurio pode ver determinada funo ou no. Para atribuir o texto que aparece nesse componente devemos utilizar a propriedade setText(), ou clicar com o boto direito do mouse sobre o componente e selecionar a opo editar texto. String nome=DevMedia; jLabelMsg.setText(Seja bem vindo +nome); Para colocarmos imagem no jLabel devemos fazer o seguinte, clicar com o boto direito do mouse sobre o componente e depois na opo icon, clicar no boto com os 3 pontos como segue na imagem.
P1
Pgina 16 de 30
Aps clicar nesse boto ir abrir uma janela com vrias opes, devemos selecionar importar para o projeto, selecionar a imagem e finalizar o processo. Dessa maneira estaremos trazendo a imagem para dentro do projeto. O cone ir aparecer no jlabel, esses passos devem ser seguidos a primeira vez em que iremos selecionar as imagens, depois basta clicar no jCombobox e selecionar o nome da imagem que j faz parte do projeto. 11.3. Jbutton Boto O JButton um componente muito utilizado em Java para a criao de formulrios onde necessrio a utilizao de botes para acionar aes dentro do formulrio, ou aes externas ao formulrio como salvar em um banco de dados ou salvar em um arquivo entre outros. A insero desse componente no Netbeans possvel aps a criao de um novo JPanel ou Jframe, atravs da opo button na janela paleta. Aps a insero desse componente no netbeans necessrio trocar o nome desse componente para ficar fcil de localiz-lo quando estivermos escrevendo cdigo. Uma boa prtica de programao utilizar o nome do componente e acrescentar ao final o nome da funo desse boto no formulrio. P1
Pgina 17 de 30
Ex: Para um jButton que vai limpar os dados de um formulrio, qual deveria ser o nome desse boto. jButtonLimpar ou jButton_Limpar Para efetuar esse processo no netbeans basta ir sobre o componente com o mouse e clicar com o boto direito e escolher a opo alterar nome da varivel. Existem diversas opes de personalizao desse componente basta clicar sobre o componente com o boto direito e selecionar a opo Propriedades, vamos a algumas delas: Font: Definir fonte tamanho e estilo de texto. Background: Cor do boto. Forenground: Cor do texto. horizontalAlignment: Alinhamento do texto dentro do componente. Icon: imagem que vai aparecer sobre o componente. Text: texto que est dentro do campo. toolTipText: texto que aparece sobre cursor quando posicionado sobre o componente. Cursor: define o cursor que aparece sobre o componente. Border: define a borda para o componente. Margin: definimos quanto de espao necessrio ao redor do componente, de acordo com a imagem ou texto do componente, podemos zerar os valores da margin para deixarmos o boto o menor possvel com a imagem ou texto. Visible: essa propriedade determina se o boto visvel ou invisvel, pode ser facilmente utilizado quando um determinado tipo de usurio pode ver determinada funo ou no. Um dos Eventos utilizado sobre um Jbutton ActionPerformed, evento quando o boto for acionado, (clicado) dessa maneira devemos dentro desse mtodo colocar a ao que esse boto est chamando, no caso de limpar os campos de textos(Jtextfield) de um formulrio devemos colocar o nome do campo mais settext() com valor caso o campo esteja em branco, caso o campo tenha um valor padro devemos colocar dentro das esse valor padro. Esse exemplo anterior foi uma ao interna do formulrio, esse boto tambm pode chamar aes externas vamos ver um exemplo. Basta criar outro JFrame exemplo jframeTeste e colocar dentro do evento ActionPerformed do boto do primeiro jframe o evento para abrir um novo JFrame.
JframeTest form= new JframeTest(): Form.setvisible(true) Nesse caso criamos um objeto do tipo do JframeTest e depois determinamos que este form deve fica visvel, passando como parmetro para o setvisible o valor true que verdadeiro.
P1
Pgina 18 de 30
11.4. JtextField Campo de Texto O JTextField um componente muito utilizado em Java para a criao de formulrios onde necessrio a insero dos dados pelo teclado. Esse campo de texto comum tambm em formulrios web, so nesses tipos de campos que o usurio preenche o seu nome, email, endereo, entre outros dados. A insero desse componente no Netbeans possvel aps a criao de um novo JPanel ou Jframe, atravs da opo campo de texto na janela paleta. Aps a insero desse componente no netbeans necessrio trocar o nome desse componente para ficar fcil de localiza-lo quando estivermos escrevendo cdigo. Uma boa prtica de programao utilizar o nome do componente e acrescentar ao final o nome do tipo de dado que ele vai guardar. Ex: Para um jTextField que vai guardar o nome de um cliente, qual deveria ser o nome desse campo. jTextFieldNome ou jTextField_Nome Para efetuar esse processo no netbeans basta ir sobre o componente com o mouse e clicar com o boto direito e escolher a opo alterar nome da varivel. Depois da sua insero pode ser necessrio alterar o tamanho do componete, para isto basta clicar no componente e arrast-lo. Existem diversas opes de personalizao desse componente basta clicar sobre o componente com o boto direito e selecionar a opo Propriedades, vamos a algumas delas: Background: cor de fundo do componente. Editable: Propriedade que se estiver marcada permite a insero/remoo pelo teclado. Font: Definir fonte tamanho e estilo de texto. Forenground: Cor do texto. horizontalAlignment: Alinhamento do texto dentro do componente. Text: texto que est dentro do campo. toolTipText: texto que aparece sobre cursor quando posicionado sobre o componente. Cursor: define o cursor que aparece sobre o componente. Border: define a borda para o componente. selectedTextColor: cor do texto quando estiver selecionado. selectionColor: cor da seleo do texto.
P1
Pgina 19 de 30
11.5. Jcombobox Campo de Seleo O jcombobox um componente muito utilizado em Java para a criao de formulrios onde h a possibilidade de vrias respostas definidas para uma pergunta.
A insero desse componente no Netbeans possvel aps a criao de um novo JPanel ou Jframe, atravs da opo jcombobox ou caixa de combinao na janela paleta. Aps a insero desse componente no netbeans necessrio trocar o nome desse componente para ficar fcil de localiz-lo quando estivermos escrevendo o cdigo. Uma boa prtica de programao utilizar o nome do componente e acrescentar ao final o nome dado contedo que ir guardar no formulrio. Ex: Para um jCombobox que vai exibir opes para o tipo de CNH de um cliente. JComboboxClienteCNH ou JComboboxCliente_CNH Existem diversas opes de personalizao desse componente basta clicar sobre o componente com o boto direito e selecionar a opo Propriedades, vamos a algumas delas: Font: Definir fonte tamanho e estilo de texto. Background: Cor de fundo.(Normalmente NO aparece no Netbeans mas funciona durante a execuo) Forenground: Cor do texto. horizontalAlignment: Alinhamento do texto dentro do componente. Text: texto que est dentro do campo. toolTipText: texto que aparece sobre cursor quando posicionado sobre o componente. Cursor: define o cursor que aparece sobre o componente. Border: define a borda para o componente. (Tem que marcar BorderPainted) Visible: essa propriedade determina se o jRadioButton visvel ou invisvel, pode ser facilmente utilizado quando um determinado tipo de usurio pode ver determinada funo ou no. SelectedItem: Define a opo que inicial selecionada. SelectedIndex: Define o ndice que est selecionado. Model: Define quais os valores que iro aparecer no componente, pode ser utilizado para insero manual de duas maneiras a primeira diretamente ao lado do nome do componente, digitando uma opo virgula a outra e assim por diante com todas. P1
Pgina 20 de 30
No exemplo acima foram inseridas todas as opes para a Carteina Nacional de Habilitao: A,B,C,D,E,AB,AC,AD,AE Ou podemos clicar no boto com 3 pontos ao lado direito da tela na linha do model para abrir uma janela onde devemos digitar cada opo em uma linha dessa janela.
P1
Pgina 21 de 30
11.6. JradioButton Boto de Opo Propriedades do JRadioButton - Java Swing componentes NetBeans Parte 8 O JRadioButton um componente muito utilizado em Java para a criao de formulrios onde necessrio a seleo de uma opo. Indicado para a utilizao de respostas onde possa ser sim ou no, masculino ou feminino entre outros. No muito indicado para mais de 3 opes porque acaba se tornando uma poluio visual, deixando o usurio querendo selecionar mais de uma opo. A insero desse componente no Netbeans possvel aps a criao de um novo JPanel ou Jframe, atravs da opo JRadioButton de opo na janela paleta. No exemplo foram inseridos 2 JRadioButtons( 1 para Masculino e um para Feminino) e um jlabel com o texto Sexo.
Aps a insero desse componente no netbeans necessrio trocar o nome desse componente para ficar fcil de localiz-lo quando estivermos escrevendo cdigo. Uma boa prtica de programao utilizar o nome do componente e acrescentar ao final o nome dado contedo que ir guardar no formulrio. Ex: Para um jRadioButton que vai guardar o sexo do cliente. JRadioButtonClienteSexo ou JRadioButton_ClienteSexo Existem diversas opes de personalizao desse componente basta clicar sobre o componente com o boto direito e selecionar a opo Propriedades, vamos a algumas delas: Font: Definir fonte tamanho e estilo de texto. Background: Cor de fundo. Forenground: Cor do texto. horizontalAlignment: Alinhamento do texto dentro do componente. Text: texto que est dentro do campo. toolTipText: texto que aparece sobre cursor quando posicionado sobre o componente. Cursor: define o cursor que aparece sobre o componente. Border: define a borda para o componente. (Tem que marcar BorderPainted) Visible: essa propriedade determina se o jRadioButton visvel ou invisvel, pode ser facilmente utilizado quando um determinado tipo de usurio pode ver determinada funo ou no. Selected: define que esta opo est selecionada. Normalmente utilizada para definir qual opo j sai marcada quando o formulrio carregado. Text: Para atribuir o texto que aparece nesse componente. Tambm podemos utilizar a propriedade setText(), ou clicar com o boto direito do mouse sobre o componente e selecionar a opo editar texto. Para utilizarmos dois jRadioButtons e selecionarmos apenas um necessrio a insero de buttonGroup, este componente encontra-se: atravs da opo grupo de botes na janela paleta. Aps a insero desse componente no formulrio ele no aparece, somente possvel acess-lo atravs da janela inspetor. P1
Pgina 22 de 30
Aps localiz-lo necessrio alterar o nome dessa varivel para o tipo de grupo de boto que ele est representando. Aps saber o nome desse grupo basta ir a cada JRadioButton que esto aparecendo no formulrio e fazem parte desse grupo e selecionar em propriedades na opo buttonGroup o nome do grupo de botes, para cada grupo de botes que existir no formulrio necessrio inserir um novo grupo. Visualize essa opo na imagem.
P1
Pgina 23 de 30
11.7. Colocando a data no Sistema Primeiro Passo, devemos inserir um Jlabel(rtulo) e trocar o nome para JlabelData. Aps colocar o componente devemos clicar com o boto direito sobre o componente, ir em personalizar cdigo e colocar o cdigo abaixo.(Alguns ajustes podem ser necessrios devido ao nome da varivel do componente) GregorianCalendar data = new GregorianCalendar(); int dia = data.get(GregorianCalendar.DAY_OF_MONTH); int mes = data.get(GregorianCalendar.MONTH)+1; int ano = data.get(GregorianCalendar.YEAR); jLabelData.setText(dia+" / "+mes+" / "+ano);
11.8. Criando um boto Sair Aps criar o boto sair, e criar o evento necessrio colocar o cdigo abaixo. System.exit(0);
12. Validao de Campos do Formulrio 12.1. Modelo 1 Validao de Campo jTextField Vamos comear falando neste post sobre as validaes de campos JTextField para as interfaces grficas usando swing. Aps inserir o jTextField no formulrio necessrio alterar o nome do componente, para que quando for necessrio acionar as suas propriedades tenhamos uma maior facilidade. J tratamos aqui nos posts sobre alguns tipos de validao, vamos rever: Componente JTextField Aceitando apenas Letras: http://www.devmedia.com.br/jTextField-aceitando-apenas-letras/26019 Componente JTextField Aceitando apenas Nmeros: http://www.devmedia.com.br/como-alterar-o-componente-jTextField-para-aceitar- apenas-numeros/26152 Validao de email: http://www.devmedia.com.br/evento-focuslost-em-jTextField-validando-email-java- swing-componentes-netbeans-parte-3/21392 Essas foram validaes sobre os tipos de informaes que os jTextFields esto aceitando no componente. Sobre os tipos de informaes cada jTextField deve aceitar. Agora vamos descobrir como validar as informaes informadas em um campo de texto ao tentar executar uma ao, Ao clicar em um boto salvar, exibir, como testar se podemos realmente efetuar a operao: P1
Pgina 24 de 30
Primeiro passo, ser montar uma interface a ser validada: No caso a validao ser antes de mandar salvar no banco de dados, vamos SUBSTITUIR o comando para salvar no banco de dados pelo cdigo para exibir uma mensagem, a fim de evitar que o cdigo fique muito extenso e difcil de ser compreendido rapidamente. Para criarmos esse cadastro precisamos inserir 1 JPanel(com borda de ttulo e borda de linha), 7 rtulos, 3 jTextFields e um boto. Vamos aos nomes dos componentes: jTextFieldNome=Campo de texto do nome jTextFieldCpf=Campo de texto do CPF jTextFieldRg=Campo de texto do rg jLabelMsgObrigatotioNome=Rtulo de campo obrigatrio do nome jLabelMsgObrigatotioCpf=Rtulo de campo obrigatrio do cpf jLabelMsgObrigatotioRg=Rtulo de campo obrigatrio do rg Bom os rtulos de Nome*, RG*, CPF* foram criados utilizando apenas um rtulo e usando propriedades de HTML para mudar a cor do asterisco. http://www.devmedia.com.br/personalizando-o-jlabel-java-swing-componentes- netbeans-parte-7/21808 Montamos a interface e trocamos o nome dos componentes que iro nos interessar no desenvolvimento dessa validao: jTextField e Jlabel Obrigatrio Ao desenvolvermos este tipo de validao vamos trabalhar com a visibilidade dos jLabel Obrigatrio. A surgem duas opes iniciais: Primeira Opo: Este formulrio pode aparecer para o usurio com todas as mensagens visveis e ao tentar exibir as informaes caso alguma no seja preenchida deixamos ela visvel e deixamos as que esto corretas invisveis e exibimos uma mensagem para o usurio confirmar os dados. Segunda Opo: Este formulrio pode aparecer para o usurio com todas as mensagens invisveis e ao tentar exibir as informaes caso alguma no seja preenchida deixamos ela visvel exibimos uma mensagem para o usurio confirmar os dados. P1
Pgina 25 de 30
Para esta etapa em que as mensagens j aparecem invisveis necessrio atribuir o valor de visibilidade como false. Cdigo para as mensagens iniciarem invisveis. jLabelMsgObrigatotioNome.setVisible(false); jLabelMsgObrigatotioCpf.setVisible(false); jLabelMsgObrigatotioRg.setVisible(false);
J podemos definir como vai funcionar a validao. Inicialmente vamos definir que todos os campos devem possuir algum valor. Mas a sequencia de cdigo pode ser personalizada para determinar um valor diferente. Para verificar se um campo de texto est vazio existem duas maneiras bsicas: Testando o tamanho do texto do componente, ou acionando a propriedade isEmpty(). Cdigo para verificar se o tamanho do campo de texto maior do que zero, se for passou na validao e a mensagem fica invisvel. Aqui o valor Zero da validao pode ser substitudo de acordo com a necessidade de informao. if (jTextFieldNome.getText().length() > 0) { jLabelMsgObrigatotioNome.setVisible(false); } else { jLabelMsgObrigatotioNome.setVisible(true); } Cdigo para verificar se o campo de texto est vazio, faz a mesma coisa do anterior, diferena que apenas verifica se o campo est vazio. if (jTextFieldNome.getText().isEmpty()) { jLabelMsgObrigatotioNome.setVisible(true); } else { jLabelMsgObrigatotioNome.setVisible(false); } Aps colocar o cdigo de validao para cada campo no formulrio necessrio agrupar todas as condies em um if sepadas pela condio AND, caso alguma das condies no seja satisfeita necessrio exibir uma mensagem para a confirmao dos dados. Cdigo completo do boto exibir, caso seja um boto salvar, no lugar da mensagem do IF entra o cdigo para efetuar a operao.
if (jTextFieldNome.getText().length() > 0) { jLabelObrigatorioNome.setVisible(false); } else { P1
Pgina 26 de 30
jLabelObrigatorioNome.setVisible(true); }
if (jTextFieldRg.getText().length() > 0) { jLabelObrigatorioRg.setVisible(false); } else { jLabelObrigatorioRg.setVisible(true); } if (jTextFieldCpf.getText().length() > 0) { jLabelObrigatorioCpf.setVisible(false); } else { jLabelObrigatorioCpf.setVisible(true); } if ((jTextFieldNome.getText().length()>0) &&(jTextFieldRg.getText().length()> 0) && (jTextFieldCpf.getText().length() > 0)) { JOptionPane.showMessageDialog(null, "Dados Validados aqui deve ser efetuada a operao!!"); } else { JOptionPane.showMessageDialog(null, "Confira os campos Obrigatrios!!"); }
Resumindo este cdigo acima, faz a validao de trs campos obrigatrios, necessrio preencher com alguma informao cada um dos campos. Alm de auxiliar no preenchimento do formulrio, este tipo de validao pode evitar que um cadastro seja salvo em branco no banco de dados, entre outros. No prximo post vamos trabalhar com outro tipo de validao de dados, em que os campos que devem ser verificados no formulrio so exibidos em uma msg. 12.2. Modelo 2 Dando continuidade aos nossos posts sobre validao de informaes nos formulrios Jframe swing em JAVA. As validaes apresentadas so validaes sobre informaes nos componentes swing de java. Os primeiros critrios de validaes que sero levados em considerao so os critrios de obrigatoriedade dos campos, garantindo assim a utilizao de campos obrigatrios no formulrio. P1
Pgina 27 de 30
Figura 1. Exemplo do formulrio a ser validado. Primeiro passo, ser montar uma interface a ser validada: No caso a validao ser antes da operao de salvar, vamos SUBSTITUIR o comando para salvar pelo cdigo para exibir uma mensagem, a fim de evitar que o cdigo fique muito extenso e difcil de ser compreendido rapidamente. Para criarmos esse cadastro precisamos inserir 1 JPanel(com borda de ttulo e borda de linha), 5 rtulos, 2 jTextFields, 4 jcombobox, 2 botes. Vamos aos nomes dos componentes: jTextFieldLogin=Campo de texto do login jPasswordSenha=Campo de senha jComboboxTipoCadastro=Componente do tipo de cadastro jComboBoxDia, jComboBoxMes, jComboBoxAno= Componentes para data. Todos os campos acima so definidos como campos obrigatrios.
Listagem 1. Cdigo para verificar a obrigatoriedade dos campos String validacao=Campos de Preenchimento Obrigatrio; //varivel de validao recebe inicialmente a mensagem acima e aps concatena os campos que ainda no foram preenchidos. int flag=0; // flag a bandeira que indica se a mensagem de validao deve ser exibida if (jTextFieldLogin.getText().isEmpty()) { validacao=validacao+\n* Campo de Login deve ser Preenchido ; flag=1; } P1
Pgina 28 de 30
if (String.valueOf(jPasswordFieldSenha.getPassword()).length()<=8){ validacao=validacao+ "\n*Campo de Senha com no mnimo 8 caracteres"; flag=1; } if (jComboBoxDia.getSelectedIndex()==0){ validacao =validacao+ "\n* Selecione o Dia de Nascimento"; flag=1; } if (jComboBoxMes.getSelectedIndex()==0){ validacao =validacao+ "\n* Selecione o Ms de Nascimento"; flag=1; } if (jComboBoxAno.getSelectedIndex()==0){ validacao=validacao+ "\n* Selecione o Ano de Nascimento"; flag=1; } if (jComboboxTipoCadastro.getSelectedIndex()==0){ validacao=validacao+ "\n* Selecione o Tipo de Cadastro"; flag=1; }
//if que testa o valor dentro da varivel flag, caso alguma das obrigatoriedades no seja satisfeita entrou em um if e a varivel flag recebeu 1 //Neste if mandamos exibir a mensagem com o valor da varivel validao if(flag==1){ JOptionPane.showMessageDialog(null, validacao); }else{ //aqui o cdigo que deve ser executado aps a validao, //entra nesse else ao passar pela validao
} Este cdigo demostra a simples utilizao de lgica para validarmos um JFrame , utilizamos o conceito de bandeira (flag) ou seja uma varivel com um valor inicial, que caso qualquer circunstncia no seja verdadeira o valor dessa varivel modificado. Essa modificao do valor padro da varivel determina que em uma condio if esse valor deve ser tratado. No caso do exemplo acima tratamos como 0 o valor inicial que determina que todos esto corretos, ao entrar em qualquer condio que no esteja verdadeira, mudamos para valor 1 o que P1
Pgina 29 de 30
garante em um prximo if qual operao deve ser realizada por essa condio. No caso mandamos exibir a mensagem de validao que tambm aproveitamos os ifs para concatenar uma mensagem personalizada para cada condio de validao do formulrio.
Resumindo: O processo foi simples, criamos uma varivel flag de controle e mensagens personalizadas para cada tipo de validao definida em nosso formulrio.
Explicao das validaes: Listagem 2: Cdigo de validao do campo Login if (jTextFieldLogin.getText().isEmpty()) { validacao=validacao+\n* Campo de Login deve ser Preenchido ; flag=1; } Explicao dessa validao. Na linha do if criamos o teste que verifica se o campo de login est vazio. Estando o campo vazio, entra no if, concatenamos a mensagem que o campo de login deve ser preenchido em uma varivel chamada validao(varivel para concatenar as mensagens de erros), e trocamos o valor da flag para 1, indicando que deve ser executada a ao de bandeira(flag)1.
Listagem 3: Cdigo de validao do campo Senha if (String.valueOf(jPasswordFieldSenha.getPassword()).length()<=8){ validacao=validacao+ "\n*Campo de Senha com no mnimo 8 caracteres"; flag=1; } Explicao dessa validao. Na linha do if criamos o teste que verifica se o campo de senha possui no mnimo 8 caracteres. No contendo 8 caracteres, entra no if, concatenamos a mensagem que o campo de senha deve possuir no mnimo 8 caracteres em uma varivel chamada validao(varivel para concatenar as mensagens de erros), e trocamos o valor da flag para 1, indicando que deve ser executada a ao de bandeira(flag)1.
Listagem 4: Cdigo de validao de campo jcombobox tipo de cadastro if (jComboboxTipoCadastro.getSelectedIndex()==0){ validacao=validacao+ "\n* Selecione o Tipo de Cadastro"; flag=1; } P1
Pgina 30 de 30
Explicao dessa validao. Na linha do if criamos o teste que verifica se o campo tipo de cadastro est selecionado na primeira posio. Estando na primeira posio, entra no if, concatenamos a mensagem que o campo de tipo de cadastro deve ser selecionado em uma varivel chamada validao(varivel para concatenar as mensagens de erros), e trocamos o valor da flag para 1, indicando que deve ser executada a ao de bandeira(flag)1. O mesmo Procedimento foi executado para os demais combobox.
Listagem 5: Cdigo de ao da bandeira(flag) Obs: Este cdigo deve ser o ltimo cdigo dos ifs if(flag==1){ JOptionPane.showMessageDialog(null, validacao); }else{ //aqui o cdigo que deve ser executado aps a validao, //entra nesse else ao passar pela validao
} Explicao dessa validao. Na linha do if criamos o teste que verifica se a varivel flag possui o valor 1, teste de ao da bandeira, caso possua o valor 1 mandamos exibir o valor da varivel validao, caso no possua o valor 1 porque passou por todos os testes de validao, podemos colocar o cdigo para salvar no banco dentro desse if, para exibir, imprimir...