Interface Gráfica em JAVA utilizando o NetBeans 1 – Abrir o NetBeans / Clicar em Arquivo / Novo Projeto.
2 ‐ Depois na opção escolher o projeto clicar em Java.
3 ‐ Depois na opção projeto clicar em Aplicativo da área de trabalho Java.
3 – Depois clicar no Botão Proximo. 4 – Depois clicar no Botão Proximo.
5 ‐ Depois dar nome ao Projeto e depois clicar no Botão Finalizar.
6 – Pronto sua interface está criada agora é só criar os layouts das telas.
7 – Do lado direito fica a paleta de componentes e as propriedades.
EXEMPLO: Criar uma interface que mostre o nome que foi digitado no Text no momento em que se clicar no botão OK.
Dê dois cliques no botão OK e digite o código abaixo: private void button1ActionPerformed(java.awt.event.ActionEvent evt) { String str; str = this.textField1.getText(); this.label2.setText("Olá, " + str + "!" ); }
CRIANDO UMA CALCULADORA EM JAVA
Primeiramente, vamos criar um novo aplicativo Java. No tutorial está sendo utilizado a IDE do Netbeans.
Neste exemplo, vou renomear o nome do projeto para ‘calc’.
Vamos clicar sobre o pacote ‘calc’ com o botão direito e adicionar um novo Formulário JFrame.
Renomeie o nome do JFrame para fCalc para identidicar o forumário da calculadora. A partir daí, só nos resta desenhar a calculadora, utilizando JButton e JTextField como o visor da mesma.
O Formulário fica da seguinte maneira:
Agora basta alterar o nome da variável do visor para começarmos a programar. Clique com o botão direito em cima do JTextField e clique em ‘Alterar nome da variável’. Renomeie para ‘visor’ para que possamos identificar e facilitar o código.
Agora, vamos mandar o Java escrever no visor cada número de acordo com cada botão que o usuário clicar. Vamos criar uma rotina para isso, com o seguinte código: pri vat e voi d pr eecher_vi sor ( St ri ng val or ) { St ri ng val or _at ual = vi sor . get Text ( ) ; / / pega o t exto at ual do vi sor vi sor . set Text ( val or _at ual + val or) ; / / adi ci ona o t exto ao val or at ual }
A partir de agora, basta adicionarmos a rotina a cada botão do formulário. Clique com o botão direito sobre o botão 0 (zero) e selecione Evento>Actions>actionPerformed.
pr i vat e voi d j But t on10Act i onPer f ormed( j ava. awt . event . Act i onEvent evt ) { pr eecher_ vi sor ( " 0") ; / / pr eenche com o val or 0 } }
Adicione o mesmo código para todos os botões numéricos, apenas mudando o número do preenchimento. Para continuar, precisamos criar duas variaveis globais que serão usadas pelo projeto todo, uma String para receber o primeiro valor e um Char para receber o operador atual. Então, declare: char operador; St r i ng val or 1;
Agora podemos criar o procedimento para cada operador. Adicione para cada operador ao evento actionPerformed o seguinte código, mudando apenas o operador para seu respectivo texto. oper ador = ' +' ; / / r ecebe o operador val or 1 = vi sor . get Text ( ) ; / / r ecebe o val or at ual do vi sor vi sor . set Text ( " " ) ; / / apaga o vi sor
No caso acima, o código pertence ao botão de soma. Agora a função responsável por calcular a variavel valor1 com o valor atual pela variavel operador. Essa função retorna um valor inteiro. repare: private int pr i vat e i nt c al c ul ar ( i nt num1, char op, i nt num2) { o cal cul o i nt r es = 0; / / r esul t ado
/ / decl ar amos as var i vei s necessari as par a
i f ( op == ' +' ) { / / se operador = + ent ao. . . res = num1 + num2; / / r esul t ado = numer o1 + n2 } el s e i f ( op == ' - ' ) { / / s enao, s e. . . res = num1 - num2; } el s e i f ( op == ' *' ) { res = num1 * num2; } el s e i f ( op == ' / ' ) { res = num1 / num2; } r et ur n r es;
/ / r et orna r esul t ado
}
Agora, só nos resta o código do botão igual (=) para calcular o valor atual com o valor armazenado na variavel valor1. Para isso vamos chamar a função que criamos anteriormente que nos retorna um valor inteiro, chamada calcular. pr i vat e voi d j But t on14Act i onPer f ormed( j ava. awt . event . Act i onEvent evt ) { St r i ng val or 2 = vi sor . get Text ( ) ; / / val or 2 recebe o val or at ual i nt v = I nt eger . parseI nt ( val or 1) ; / / conver t e o val or 1 em i nt ei r o i nt v2 = I nt eger . par seI nt ( val or2) ; / / convert e val or2 em i nt ei r o vi sor . set Text ( " " +cal cul ar ( v, operador , v2) ) ; / / def i ne o vi sor pel os parametr os da f unção cal cul ar / / v = val or1 | v2 = val or2 ( atual ) | operador = var i avel decl arada ant eri orment e }
Ao executarmos a aplicação, o formulário não é exibido, por que? Porque ele começa sendo executado a partir do arquivo calc.java e não do formulário JFrame (fCalc). Então, abra o arquivo java.calc e adicione a linha abaixo. package cal c;
i mport j avax. swi ng. J Fr ame; publ i c cl ass Cal c { publ i c s t a t i c voi d mai n( St r i ng[ ] args) { / / cri a uma nova i nst anci a do for mul ári o e dei xa- o vi si vel . new f Cal c( ) . s et Vi s i bl e( t r u e) ; } }
CLASSE JOPTION P ANE
A classe JOptionPane nos proporciona uma série de métodos estáticos que ao serem invocados criam caixas de diálogos simples e objetivas. Para usar JOptionPane temos sempre que importar o pacote javax.swing.JOptionPane primeiro. Caixas de Diálogo Input Text
As caixas de diálogo de entrada de texto ou Input Text Dialog servem para fazer uma requisição de algum dado ao usuário de forma bem simples e direta. O que é digitado pelo usuário é retornado pelo método em forma de string. Existem mais de 10 métodos sobrecarregados para invocar uma caixa de diálogo Input Text, mas, a princípio, usaremos a mais simples. O método showInputText recebe um argumento que é a string contendo a informação desejada, o que na maioria das vezes é uma pergunta ou pedido. O exemplo abaixo demonstra um programa pedindo para que digite seu nome. 1.import javax.swing.JOptionPane; 2. 3.public class CaixasDeDialogo { 4.public static void main(String[] args) { 5.JOptionPane.showInputDialog("Qual é o seu nome?"); 6.} 7.} Será apresentada uma janela a seguir.
Caixas de Diálogo Confirm
Outra caixa de diálogo simples e objetiva do JOptionPane é a caixa de diálogo de confirmação ou Confirm Dialog. A Confirm Dialog (caixa de confirmação) consiste de uma caixa contendo uma mensagem, um ícone e três botões: sim, não e cancelar. Apesar deste ser o aspecto padrão, esta caixa, como qualquer outra de JOptionPane, pode ser facilmente configurada (assunto que será tratado com mais detalhes nas próximas páginas). No método padrão chamado showConfirmDialog usamos dois argumentos:
1. O primeiro é a dependência ou frame pai, ou seja, de qual janela esta confirmação está sendo gerada. Como nossos exemplos iniciais não possuem nenhuma dependência, então, sempre usaremos null neste argumento. 2. O segundo argumento é a mensagem que desejamos mostrar ao usuário. O método showConfirmDialog sempre retorna uma constante que é a resposta clicada pelo usuário, que são: Valor Nome da Constante
Equivale
0
YES_OPTION
ao clicar no botão Yes (sim)
1
NO_OPTION
ao clicar no botão No (não)
2
CANCEL_OPTION
ao clicar no botão Cancel (cancelar)
Melhorando o exemplo anterior ficaria assim. import javax.swing.JOptionPane; public class CaixasDeDialogo { public static void main(String[ ] args) { String nome = null; nome = JOptionPane.showInputDialog("Qual é o seu nome?"); JOptionPane.showConfirmDialog(null, "O seu nome é " + nome + "?"); } } A caixa de confirmação pareceria da seguinte forma:
Caixa de Diálogo de Mensagem
A caixa de diálogo de mensagem é uma caixa que serve apenas para emitir uma mensagem. Esta caixa também é muito configurável e versátil, pois serve para muitas situações distintas como uma mensagem de erro, um alerta, ou simplesmente uma informação. O método showMessageDialog é responsável em trazer a caixa de mensagem, o qual pode ter muitos argumentos, porém, vamos nos ater ao mais simples. Assim como o método showConfirmDialog, usaremos null como valor de nosso primeiro argumento, pois, por enquanto, não há dependência de outras janelas em nosso programa. O segundo argumento é a mensagem que desejamos emitir. Para finalizar nosso exemplo, incluiremos as caixas de mensagem de acordo com as respostas. .import javax.swing.JOptionPane; .public class CaixasDeDialogo { public static void main(String[] args) { String nome = null; int resposta; nome = JOptionPane.showInputDialog("Qual é o seu nome?"); resposta = JOptionPane.showConfirmDialog(null, "O seu nome é " + nome + "?"); if (resposta == JOptionPane.YES_OPTION) {
// verifica se o usuário clicou no botão YES JOptionPane.showMessageDialog(null, "Seu nome é " + nome); } else { JOptionPane.showMessageDialog(null, "Seu nome não é " + nome); } } } Abaixo está um exemplo de como irá ficar a caixa de mensagem caso clique no botão YES.
Entrada e Saída de dados por JOptionPane
As caixas de diálogo têm uma função importante na interação do programa com o usuário. É através delas que dados são solicitados pelo programa e é através delas que mensagens de erro, informações, alertas e avisos podem ser exibidos para o usuário. A classe javax.swing.JOptionPane facilita a tarefa de exibir diálogos padronizados que solicitem algum valor ao usuário ou que exibam alguma informação. Apesar da aparente complexidade, em função do grande número de métodos que ela implementa, a maioria das tarefas realizadas com essa classe se resumirá a chamadas de uma única linha a um dos seguintes métodos. •showMessageDialog(); Caixa de diálogo que apresenta uma mensagem, possibilitando acrescentar ícones de alerta ao usuário; •showConfirmDialog(); Caixa de diálogo que, além de emitir uma mensagem, possibilita ao usuário responder a uma pergunta; •showInputDialog(); Caixa de diálogo que, além de emitir uma mensagem, permite a entrada de um texto; •showOptionDialog(); Caixa de diálogo que abrange os três tipos anteriores. Uma característica particular da classe JOptionPane é a não necessidade de declaração de objetos para a criação das caixas, que são criadas diretamente pelos métodos dessas classes. showMessageDialog() A caixa de diálogo showMessageDialog() é utilizada para mostrar ao usuário alguma informação e não retorna nenhum tipo de valor de resposta. Essas caixas de diálogo podem apresentar um ícone referente ao tipo de mensagem (pergunta, informação, alerta, ou erro) ou não apresentar nada, apenas a mensagem na tela sem ícone. Sintaxe:
JoptionPane.showMessageDialog(Component,
, , ) Onde: •Component: Refere-se a um objeto do tipo contêiner que permite definir a posição da tela em que a caixa de mensagem aparecerá. Normalmente esse argumento é deixado como "null" (default) para que a mensagem apareça centralizada na tela. •Mensagem: É a mensagem do tipo String que a caixa de diálogo informa ao usuário. •Título da mensagem: É o texto que aparece na barra de título da janela da caixa de diálogo. •Tipo da mensagem: É o ícone que representa o tipo de mensagem que está sendo informado ao usuário. Esse ícone é definido pelo usuário. A tabela abaixo apresenta as "constantes" da linguagem Java para definição dos ícones a serem apresentados na tela. Ícone Comando Pergunta JOptionPane.QUESTION_MESSAGE
Informação JOptionPane.INFORMATION_MESSAGE Alerta JOptionPane.WARNING_MESSAGE
Erro JOptionPane.ERROR_MESSAGE Vazio (somente mensagem) JOptionPane.PLAIN_MESSAGE showConfirmDialog() As caixas de diálogo de confirmação são pequenas janelas que possibilitam ao usuário responder algum questionamento por meio dos botões "YES, NO e CANCEL". Uma vez apresentada na tela, o usuário escolhe uma das opções e, dependendo do botão clicado, é gerado um valor inteiro pertencente à classe JOptionPane: •YES_OPTION = 0; •NO_OPTION = 1; •CANCEL_OPTION = 2. Estes valores são utilizados para conhecer qual dos botões foi clicado pelo usuário. Existem três tipos de caixa de diálogo de confirmação: •Apresentam os botões YES e NO YES_NO_OPTION ou 0; •Apresentam os botões YES, NO e CANCEL YES_NO_CANCEL ou 1; •Apresentam os botões OK e CANCEL OK_CANCEL_OPTION ou 2.
Sintaxe: JoptionPane.showConfirmDialog(Component, , , , ). A única diferença entre essa sintaxe e a sintaxe da caixa de mensagem (showMessageDialog()) se refere ao parâmetro no qual são inseridos os botões que aparecerão na caixa de diálogo. showInputDialog() As caixas de diálogo de entrada são geradas a partir do método showInputDialog() e são utilizadas para fazer uma pergunta ao usuário e solicitar a entrada de um texto. Esse texto será armazenado em uma variável qualquer do tipo String. A sintaxe usada na criação de caixas de diálogo de entrada é praticamente a mesma usada nas caixas de mensagem. Sintaxe: JoptionPane.showInputDialog(Component, , , , ). showOptionDialog() As caixas de diálogo de opção são geradas a partir do método showOptionDialog() e são bem complexas. São capazes de combinar todos os recursos já vistos nas outras caixas de diálogo. Sintaxe: JOptionPane.showOptionDialog(Component, , , , , <ícone>, , ). Onde: •Botões presentes: Um tipo de caixa que utiliza as variáveis YES_NO_OPTION, YES_NO_CANCEL_OPTION ou OK_CANCEL_OPTION. Deve-se utilizar o 0(zero) caso outros botões sejam utilizados no lugar destes. •Tipo de mensagem: Uma das variáveis de pergunta, informação, alerta, ou erro; •Ícone: Um objeto ImageIcon a ser apresentado no lugar de um dos ícones do argumento anterior (). Se nenhum ícone for usado, deve-se colocar a palavra "null" no lugar desse argumento. •Array de objetos: É um array de objetos que contém os componentes ou outros objetos que representam as escolhas da caixa de diálogo, caso YES_NO_OPTION, YES_NO_CANCEL_OPTION ou OK_CANCEL_OPTION não esteja sendo utilizado. •Seleção Padrão: O objeto que representa a seleção padrão, caso as opções YES_NO_OPTION, YES_NO_CANCEL_OPTION ou OK_CANCEL_OPTION não estejam sendo usadas. Exemplos da utilização dos métodos vistos: import javax.swing.JOptionPane;
public class TesteJOptionPane { public static void main(String int resposta = JOptionPane.NO_OPTION; args[]){ while (resposta == JOptionPane.NO_OPTION){ String sexo = JOptionPane.showInputDialog(null, "Digite seu sexo. //Exemplo de utilização do metodo showInputDialog() \nM para masculino e F para feminino" , "Definir sexo", JOptionPane.PLAIN_MESSAGE); if (sexo.equalsIgnoreCase("M")){ JOptionPane.showMessageDialog(null, "Você é do sexo masculino!", //Exemplo de utilização do metodo showMessageDialog() "Sexo Masculino", JOptionPane.INFORMATION_MESSAGE); }else if (sexo.equalsIgnoreCase("F")){ JOptionPane.showMessageDialog(null, "Você é do sexo feminino!", "Sexo Feminino", JOptionPane.INFORMATION_MESSAGE); } else{ JOptionPane.showMessageDialog(null, "Sexo inválido", "Invalido", JOptionPane.ERROR_MESSAGE); } resposta = JOptionPane.showConfirmDialog(null, "Deseja encerrar o } JOptionPane.showMessageDialog(null, "O programa será encerrado", //Exemplo de utilizacao do metodo showConfirmDialog() programa?", "Encerrar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); "Finalizar", JOptionPane.WARNING_MESSAGE); System.exit(0); } import javax.swing.JOptionPane; public class TesteJOptionPane2 {public static void main(String[] args) { String[] escolha = {"entre 1 e 20 anos", "entre 21 e 40 anos", "mais de 40 anos"}; //Exemplo da utilização do metodo showOptionDialog()int resp = JOptionPane.showOptionDialog(null, "Qual sua idade?", "Idade", 0, JOptionPane.QUESTION_MESSAGE, null, escolha, escolha[0]); System.exit(0); String idade = escolha[resp]; JOptionPane.showMessageDialog(null, "Foi informado: " + idade, "Informação", JOptionPane.INFORMATION_MESSAGE); } As Classes I/O Existe ainda uma outra forma de realizar entrada e saída. As classes I/O DataInputStream e DataOutputStream podem ser utilizadas em conjunto com os atributos System.in e System.out para entrada e saída de dados pelo teclado via console. Exemplo:
import java.io.DataOutputStream;import java.io.DataInputStream;import java.io.IOException;public class TesteDataOutputStream { public static void main(String[] args) { // Utilizacao da classe DataOutputStream em conjunto com System.out DataOutputStream saida = new DataOutputStream (System.out); // Utilizacao da classe DataInputStream em conjunto com System.in DataInputStream entrada = new DataInputStream (System.in); try{ byte b[] = new byte[50]; saida.writeBytes("Digite o seu nome\n"); entrada.read(b);String m = new String(b).trim(); saida.writeBytes("O nome digitado foi: "); saida.writeBytes(m); //descarrega (na tela) o que esta armazenado no objeto saida saida.flush(); } catch (IOException e){ System.out.println();
CAIXA DE DIÁLOGO COM DIVERSOS BOTÕES PERSONALIZADOS
public static void main(String[] args) { String nome, estadoCivil; nome = JOptionPane.showInputDialog("Digite o seu Nome"); estadoCivil = JOptionPane.showInputDialog("Digite seu estado Civil"); JOptionPane.showMessageDialog(null, "o nome digitado é" +nome+ "\nO estado civil é:"+estadoCivil); ); } }