Material didáticoJava GUI do NetBeans – Criando interfaces gráficas rápidas Prof. Carlos 1 UTILIZANDO A INTERFACE GRÁFICA – GUI NO NETBEANS FAZENDO PROJETOS RÁPIDOS, DIGITANDO POUCO CÓDIGO Exemplo 1: Criando um projeto A primeira etapa é criar um projeto do IDE para o aplicativo que vamos desenvolver. Chamaremos nosso projeto de AdicaoNumero. 1. Escolha Arquivo > Novo projeto. Como alternativa, você pode clicar no ícone Novo projeto na barra de ferramentas do IDE. 2. No painel Categorias, selecione o nó Java. No painel Projetos, escolha Aplicativo Java. Clique em Próximo. 3. Digite Adicao no campo Nome do projeto e escolha um caminho, ou seja, em seu diretório base como a localização do projeto, em outras palavra um lugar onde você vai gravá-lo. 4. Não apague nenhum código do formulário, o código será criado automaticamente. 5. Verifique se a caixa de verificação Definir como projeto principal está selecionada. 6. Desmarque a caixa de verificação Criar classe principal caso esteja selecionada. 7. Clique em Terminar. Ok o projeto Adição foi iniciado Exercício 2: Construindo o front end – Pacote GUIs Para prosseguir com a construção da nossa interface, precisamos criar um contêiner Java no qual colocaremos os outros componentes requeridos da GUI. Nesta etapa criaremos um contêiner usando o componente JFrame. Colocaremos o contêiner em um novo pacote, que aparecerá no nó Pacotes de códigos-fonte. Crie um contêiner JFrame 1. Na janela Projetos, clique com o botão direito do mouse no nó Arquivo > Formulário GUI Swing >Formulário JFrame. Adicao e selecione Novo selecione TitledBorder na lista. 1. Carlos 2 Percebe que: O IDE cria o formulário JFrame e a classe NumeroAdicao no aplicativo Adicao. Indique o pacote: Adicao. três JTextFields e três JButtons como você vê acima. logo: JFrame = Painel JLabel = Rótulo JTextFields = Campo de texto JButtons = OK Button Usaremos a paleta para preencher o front end do nosso aplicativo com um JPanel.. Prof. 4. Clique em Terminar. vá para a janela Propriedades e clique no botão de reticências (. deixe-os bem bonitinhos. Comece selecionando um JPanel na paleta e solte-o no JFrame. Observe a captura de tela e os três JLabels. e abre o formulário construtor de GUIs. Depois de terminar de arrastar e posicionar os componentes mencionados anteriormente. é fácil redimensioná-los.. Adicionando componentes: Criando o front end Agora ficou muito mais fácil! é só selecionar o componente e arrastá-lo para dentro do JFrame: Nosso NetBeans está em português-br. . Indique o nome da classe: NumeroAdicao. e digite Adição de números no campo Título. Obs. Na caixa de diálogo Borda. 3. 3. escolha Janelas > Paleta. Se você não vir a janela Paleta no canto direito superior do IDE. três JTextFields e três JButtons. Adicionaremos três JLabels. Enquanto o JPanel estiver realçado. 4. o JFrame deve ter uma aparência como a da captura de tela seguinte. Clique em OK para salvar as alterações de e saia da caixa de diálogo. Você agora deve ver um JFrame intitulado vazio que diz Adição de número como na captura de tela.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas 2.) ao lado da borda para escolher um estilo de borda. 2. Renomeie o texto de exibição de jButton2 para Adicionar.) 6. Repita esta etapa para jTextField2 e jTextField3. Clique duas vezes em jLabel1 e altere a propriedade do texto para Primeiro número: jLabel2 e altere o texto para Segundo número: jLabel3 e altere o texto para Resultado: 4. Sua GUI finalizada agora deve ser semelhante à captura de tela seguinte: Exercício 3: Adicionando funcionalidade Neste exercício. 1.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. clicando no campo de texto. 5. jButton3 para Sair. Clique duas vezes em 3. Carlos 3 Renomeando os componentes Nesta etapa. Talvez você tenha que redimensionar o jTextField1 para seu tamanho original. vamos dar funcionalidade aos botões Adicionar. Clique duas vezes em 2. Renomeie o texto de exibição de 7. Renomeie o texto de exibição de jButton1 para Limpar. As caixas jTextField1 e jTextField2 serão usadas para entrada do usuário e jTextField3 para a saída do programa . (Você pode editar o texto de um botão. Limpar e Sair.o que estamos criando é uma calculadora muito simples. Exclua o texto da amostra de jTextField1. . clicando com o botão direito do mouse no botão e escolhendo Editar texto. Ou você pode clicar no botão. Vamos começar. vamos renomear o texto de exibição dos componentes que acabamos de adicionar ao JFrame. pausar e clicar novamente. Você pode tornar o texto de exibição editável. pausando e clicando no campo de texto novamente. private void jButton3ActionPerformed(java.ActionEvent evt) { System. Digite o código no local similar indicado anteriormente: jTextField1. 1.event. Ele vai aceitar a entrada do usuário de jTextField1 e jTextField2 e converter a entrada de um tipo String para uma flutuação. Portanto.setText(""). num2. // Agora vamos adicionar colocando na variável resultado . 1. Carlos 4 Fazendo o botão Sair funcionar Para dar função aos botões. Ele automaticamente indicará onde você deve escrever o código para sair do programa.getText()). na essência. //TODO: Add your handling code here: .Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. resultado. queremos saber quando o botão é pressionado.exit(0).ActionEvent evt) { 2. Escreva apenas: System. Em seguida.setText("").awt.Traduzindo: Adicione todo o seu código aqui: } 3. por clique do mouse ou via teclado. jTextField3. ele fará a adição dos dois números e.parseFloat(jTextField1. 3. Vamos começar! 1.parseFloat(jTextField2. temos que atribuir um manipulador de eventos a cada um deles para responder aos eventos. private void jButton3ActionPerformed(java. } Fazendo o botão Limpar funcionar 1. num2 = Float. converterá a soma para um tipo String e o colocará em jTextField3. ficará com esta aparência: 2. Em nosso caso. usaremos ActionListener respondendo a ActionEvent. Dê duplo clique no botão Adicionar e digite o código a seguir. Agora faremos o botão Limpar apagar todo o texto dos jTextFields. 2. O código acima altera o texto em todos os nossos três JTextFields para nada. Dê um duplo clique no botão Limpar. Fazendo o botão Adicionar funcionar O botão Adicionar realizará três ações. num1 = Float. jTextField2. 1. ele está sobrescrevendo o texto existente por um espaço em branco.exit(0).setText(""). 4. finalmente.event.awt. // vamos converter texto para número real (float).getText()). a partir da linha 3 é lógico. float num1. Duplo clique no botão Sair. Escolha Executar > Executar projeto principal 2. Eu costumo. primeiramente COMPILAR <F9> e depois EXECUTAR <SHIFT+F6> De agora em diante vamos utilizar o Netbeans para fazermos as interfaces gráficas com maior rapidez e tornar o trabalho mais agradável. Carlos 5 Agora nosso programa está completo e podemos construí-lo e executá-lo para vê-lo em ação.setText(String.valueOf(resultado)). // Vamos colocar o resultado na caixa de texto // para isso temos que converter float para string. EXERCÍCIO: FAZENDO UMA INTERFACE GRÁFICA PARA CADASTRO DE CLIENTES .Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas resultado = num1+num2. Prof. Exercício 4: Executando o programa Para executar o programa no IDE: 1. jTextField3. basta dar duplo clique e quando ficar azul digite o rótulo. dê um clique para selecioná-lo e pause 2 a 3 segundos e dê outro clique para ativá-lo. CEP e UF. Digitação dos Rótulos (Labels). 1 Caixa de Combinação (jComboBox). Endereço. Nos Campos.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. 2 Campos de textos Formatáveis. 1 Campo de texto. 3 Botões de Opções (RadioButtons) d) No terceiro Painel vemos 3 botões (jButtons): Confirmar. b) No primeiro Painel vemos: 5 Rótulos (Labels): Nome. Limpar e Fechar Preparando os componentes utilizando o Painel de Propriedades 1. . 2. 1 Campo Formatável (jFormattedTextField). quando o texto ficar azul apague. c) No segundo Painel vemos: 4 Rótulos. 3 Campos de Texto (jTextFields). Cidade. para retirar os nomes deles. Carlos 6 2º EXEMPLO: FORMULÁRIO PARA CADASTRO DE CLIENTES Neste segundo exercício vamos fazer um cadastro de clientes com o seguinte layout: Dentro do JFrame principal (Formulário de trabalho) vemos: a) 3 Paineis com título (TitledBorder) devidamente alinhados. jComboBox1. jRadioButton4... O botão confirmar.exit(0). Codificação dos eventos: 1. Assim terminamos mais um exemplo. Mude a cor da fonte com Foreground e mude a cor de fundo com BackGround.. ítem2 para MG. enfim. Campo Formatável (jFormattedTextField): CEP escolhe a propriedade FormattedFactory e escolha Máscara e Personalizado. jTextField2. jTextField4.setText(""). jTextField3. Dê duplo clique no botão Limpar e digite o código: jTextField1. jRadioButton1.setSelected(false). 3. formate assim: #####-### para o CEP.setText(""). Para digitar no botões.. mude a fonte na propriedade font.setText("").setSelectedIndex(0).. . 2.setText("").setSelected(false). Carlos 7 3. Na Caixa de combinação. jRadioButton2. escolha a propriedade Model e altere os itens: ítem1 para SP. dê duplo clique no botão e digite: // TODO add your handling code here: = Digite todo o seu código aqui: System. Começando pelo botão Fechar. Para telefone faça o mesmo fazendo o formato: (##)####-#### 4. 5.setSelected(false). ficará para codificar depois ou fazemos um arquivo ou fazemos um banco de dados.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. faça o mesmo: dê um clique para selecioná-lo espere 2 a 3 segundos e dê outro clique para ativá-lo e digitar 6. jRadioButton3.setSelected(false). setText("").getText()). jTextField3. Botão Limpar: jTextField1. vlr_real=vlr_dolar*cotacao.parseFloat(jTextField2.setText(String. Carlos 8 + Exemplos – feitos em classe 1. vlr_dolar=Float. pela cotação do dia Botão Calcular: float vlr_dolar. jTextField2.setText("").cotacao. Conversão de dólar para Real. Peso Ideal e IMC Botão Calcular: . Botão Sair: System. jTextField3.getText()).exit(0). vlr_real.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof.parseFloat(jTextField1.valueOf(vlr_real)).setText(""). 2. cotacao=Float. pi = ((62.setSelected(false). 4. jLabel8.valueOf(imc)). você está em seu peso normal"). else if (imc <= 39. Carlos 9 Botão Limpar: jTextField1.setText(String. else if (imc <= 24.setSelected(false).setText("Voce esta abaixo do peso").setText("Você está acima do peso (Sobrepeso)").setText(""). altura = Float.parseFloat(jTextField2.isSelected()) { jRadioButton1.setText(""). else if (imc <= 29.7 * altura) .9) jLabel10. imc.setText("Obesidade grau II"). else if (imc <= 34.5) jLabel10. pi = (72. jLabel8.9) jLabel10. imc = pa/(altura*altura).exit(0). jLabel10.getText()).setText("").48.isSelected()) { jRadioButton2. Fatorial de um numero selecionado no ComboBox – (Caixa de Combinação) . else jLabel10. } jLabel9.setText("Obesidade grau I").1 * altura) .62.9) jLabel10.setText(String.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas double pi=0. if (jRadioButton1.Grave!").setText("Obesidade grau III . } else if (jRadioButton2.9) jLabel10.setSelected(false).setText(""). Sair: System.parseFloat(jTextField3. pa. pa = Float.setText("").getText()). jRadioButton2.valueOf(pi)).setSelected(false). if (imc <= 18. jRadioButton1. jLabel9. jTextField2.7). altura. jTextField3. Prof.setText("Parabéns.setText(""). n. Carlos 10 Botão Calcular (único botão programado): double fat=1. salbruto. ht = Float. i<=n. String nome. Object s = jComboBox1. int cod.isSelected()) || (jRadioButton3.parseFloat(jTextField4.parseFloat(jTextField3.getText()). saliq. Programa Salário: Botão Calcular: double sh. 5. ht. n = Integer.desc. if ((jRadioButton2. for (i=1.INFORMATION_MESSAGE).i++) { fat=fat*i. abono. } JOptionPane.getText())."Fatorial de "+n+ " = " +fat. sh = Float.getText(). else . perc.showMessageDialog(null. nome = jTextField2. cod = Integer.parseInt(""+s).JOptionPane.getText()).isSelected())) abono = 200.parseInt(jTextField1. "Fatorial". int i.getSelectedItem().Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. setSelected(false).setSelected(false). jTextField3.2f.desc. mês e ano com a hora do sistema. 6.setText(""). para o dia. 11 Limpar: jTextField1. else if (salbruto <= 6000) perc = 0. Múltiplos painéis: Pega-se um painel tabulado e sobre este coloca-se outros painéis (não tabulado e sim painel comum). jTextField2.setText(""). JOptionPane. else if (salbruto <= 4000) perc = 0. desc = salbruto * perc. 7.setSelected(false). salbruto = (sh*ht)+abono. Carlos abono = 100. . saliq = salbruto . jRadioButton4.1f.exit(0). jRadioButton1. jTextField4.setText(""). else perc = 0. Sair: System. Ao selecioná-los e clicarmos no botão exibir deve aparecer no jlabels. Neste caso coloquei 3 Paineis comuns sobre o Painel tabulado. if (salbruto <= 1000) perc = 0f. Dia mês e Ano: Ao rodar deve aparecer no jLabels o Dia."Código = "+cod+"\nNome = "+nome+"\nSalário Bruto = R$ "+salbruto+"\nDesconto = R$ "+desc+"\nSalário Líquido = R$ "+saliq). Propriedade: Model (Spinner Model) e escolha data.showMessageDialog(null. jRadioButton2. Utilizamos Controles Giratórios (Controle Giratório = jSpinner).setSelected(false).15f. Mês e Ano.setText("").Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. jRadioButton3. parseFloat(jTextField4.ActionEvent evt) { // TODO add your handling code here: double sh. salbruto.getNextValue().event.parseInt(jTextField1. saliq. perc. String nome.setText(String.getText(). } 8. cod = Integer. Botão Calcular: O novo código do botão calcular ficou assim: private void jButton1ActionPerformed(java. nome = jTextField2. pois se um deles for marcado os outros não poderão mais serem marcados o que é o correto. ht = Float. sh = Float.getText()).event. Salário2: Retomemos o exemplo 4 (Salário) acima e consistimos o JRadioButton. jLabel2. se um for marcado os outros não podem .parseFloat(jTextField3.awt.getText()).awt.getText()). int cod.desc.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. Carlos 12 Botão Exibir: private void jButton1ActionPerformed(java. abono=0. //Consistência do jRadioButton. ht.ActionEvent evt) { // TODO add your handling code here: Object a = jSpinner1.valueOf(a)). setText("").2f.isSelected()) { abono = 200. jTextField2.setText("").isSelected()) { abono = 100. } else if (jRadioButton4. jRadioButton4.exit(0).setSelected(false). jRadioButton3. jRadioButton4. saliq = salbruto .setSelected(false).setSelected(false).15f.setSelected(false).setSelected(false).setSelected(false). Botão Sair: System. Carlos 13 salbruto = (sh*ht)+abono. jRadioButton3.setSelected(false).setSelected(false).setSelected(false). } else if (jRadioButton1. jRadioButton4.1f."Código = "+cod+"\nNome = "+nome+"\nSalário Bruto = R$ "+salbruto+"\nDesconto = R$ "+desc+"\nSalário Líquido = R$ "+saliq). jRadioButton2.setSelected(false).isSelected()) { abono = 100. } else if (jRadioButton3. jTextField3.setSelected(false). else if (salbruto <= 4000) perc = 0.setText(""). } Botão Limpar: jTextField1.isSelected()) { abono = 200. } Prof. jRadioButton2. jRadioButton3.setSelected(false).desc.setSelected(false). JOptionPane. jRadioButton4. jRadioButton1. desc = salbruto * perc. jRadioButton3. else perc = 0.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas if (jRadioButton2. if (salbruto <= 1000) perc = 0f.setSelected(false).setText(""). jTextField4.setSelected(false). .showMessageDialog(null. jRadioButton2. jRadioButton1.setSelected(false). jRadioButton2. jRadioButton1. else if (salbruto <= 6000) perc = 0. jRadioButton1. ex: import java. Para fazer uso dela é necessário importa-la. É utilizado para numeros getCurrencyInstance() Usado para formatar moedas getIntegerInstance() Usado para formatar números ignorando casas decimais getPercentInstance() Usado para formatar frações pro exemplo 0.text.345. faz parte do pacote java.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof.format(12345678. import java.NumberFormat. // imprimirá R$ 12. também identifica a posição do sinal do número e identifica o prefixo que indica a moeda em caso de valores monetários. realizando a distinção entre o sinal de ponto.9 0)).milhar e de decimal.text.text e permite formatar números conforme a localização geográfica em que você se encontra.678.NumberFormat. public class Formata { public static void main(String[] args) { System.text.out.90 } } Agora um exemplo para uma situação em que se há muitos números a serem formatados. Carlos 14 Formatação de números Esses exemplos abaixo podem serem testados no JCreator A classe NumberFormat.NumberFormat.getCurrencyInstance().println(NumberFormat. Os principais métodos do NumberFormat são: getNumberInstance() Retorna a instância de um objeto com base no formato da localidade padrão.15 é formatado e mostrado como 15% Exemplo: import java. public class Formata2 { . valores monetários e percentuais. A Classe NumberFormat possui três mêtodos para formatar números. public class Formata { public static void main(String[] args) { double valor = 2000.95845.00 Formato impresso 1.print(". System.out.223 . Carlos 15 public static void main(String[] args) { double n[]={523.5 . se número menor que um mostra zeros na frente.##"). double vezes = 3. a < n.out.println().1084.34. R$ 1. a++) { if(a != 0) System.format(n[a])).535.out. R$ 54. 54344.23 .00) 0.67 } Algumas strings de formatação que podem ser utilizadas com o Decimal Format Marcara de formatação . for (int a = 0.##0.print(dx). "). System.DecimalFormat. /* Imprime: R$ 523.23.0. R$ 95.##0. String dx = df.print(z. mostra $ Se número entre -1 e 1 $. } System.##0.text.##### ($1.0. NumberFormat z = NumberFormat.895}.50 Descrição Separa grupo dos milhares com vírgulas.getCurrencyInstance().50) 1244. double prestacao = valor/vezes.00. Números negativos entre parênteses.34.format(prestacao).845.242.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. } // sera impresso : 666.90 */ } } Ainda é possível criar uma formatação personlizada utilizando o objeto DecimalFormat.344. DecimalFormat df = new DecimalFormat("0.($.084.22.length.out. por exemplo: import java. Uso de Menus – Vários Forms: demais forms (jFrames) No menu dp Sistemade Locação chama-se os Código java: clicar com o botão direito no menu em Clientes: .Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. 9. tabelas com colunas de largura fixa e nem números em formato hexadecimal ou octal. Carlos 16 mostra zero na frente e não mostra zeros no final. É importante lembrar que DecimalFormat não é adequada para formatar notações científica. event. FormCadastro.show(). Carlos 17 Insira o seguinte código que vai chamar o outro formulário jFrame: private void jMenuItem1ActionPerformed(java. Outro exemplo de uso de vários forms: .show(). setVisible(false).ActionEvent evt) { // TODO add your handling code here: Cadastro FormCadastro = new Cadastro(). setVisible(false). } Agora você primeiramente compila pressionando F9 e em seguida Executa pressionando <SHIFT> +F6 10. FormClientes.Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof.awt.event. } No botão Menu segundo form (jFrame2) digite o evento seguinte: private void jButton1ActionPerformed(java.ActionEvent evt) { // TODO add your handling code here: Clientes FormClientes = new Clientes().awt. Material didático Java GUI do NetBeans – Criando interfaces gráficas rápidas Prof. FormFolha.show(). Carlos 18 Para Horistas no MenuItem: Digite o código: Horistas FormHoristas = new Horistas(). setVisible(false). No botão Retorna do outro formulário (Horistas): Folha FormFolha = new Folha(). setVisible(false).show(). Bom trabalho! Boa prova final ! . Vamos usar a Formatação de números para colocar os valores. Exercício prático: Vamos completar o projeto Folha de pagamento para horistas e comissionados. Os resultados de cada folha de pagamento será colocado em um JOptionPane a parte. FormHoristas.