PROJETO DESKTOP
Aula 12/09/2016
https://sites.google.com/site/profalinerosafeuc Prof. Aline Rosa
E-mail: [email protected]
RECAPITULANDO
Na última aula iniciamos a construção de um novo projeto, o cálculo de uma conta de telefone baseado nos pulsos. Vimos como utilizar uma Classe Abstrata e Polimorfismo. Nesta aula vamos implementar a Tela e o uso de um novo componente.
CONSTRUINDO A TELA
Crie um novo JFrame com o nome de TelaTelefone e coloque-o no pacote Visao. Defina as seguintes propriedades:
PROPRIEDADE VALOR
Política de Tamanho do Form Gerar Código de Redimensionamento
Gerar Posição Desmarcado
Gerar Tamanho Marcado
Gerar Centralizado Marcado
Insira os componentes conforme modelo seguinte:
Figura 1 - Modelo de tela
COMPONENTE PROPRIEDADE VALOR JTextField1 Nome da Variável txtNome
JTextField1 Text (vazio)
JTextField2 Nome da Variável txtTelefone
JTextField2 Text (vazio)
JTextField3 Nome da Variável txtValorPulso
JTextField3 Text (vazio)
JTextField4 Nome da Variável txtQuantPulso
JTextField4 Text (vazio)
JTextField5 Nome da Variável txtAssinatura
JTextField5 Text (vazio)
JLabel1 Text Tipo de conta:
JLabel2 Text Nome:
JLabel3 Text Telefone:
JLabel4 Text Valor pulso:
JLabel5 Text Quant. pulso:
JLabel6 Text Assinatura
JButton1 Nome da Variável btnCalcular
JButton1 Text Calcular
JButton2 Nome da Variável btnLimpar
JButton2 Text Limpar
JButton3 Nome da Variável btnSair
JButton3 Text Sair
COMPONENTE JComboBox
O componente JComboBox (Caixa de Combinação) localiza-se nos controles Swing. Ele permite a exibição de um conjunto de opções para seleção de uma delas. Podem ser usados, entre outros, vários métodos para ter acesso fácil ao seu conteúdo e ao que estiver selecionado.
getSelectedItem() – Devolve o item que estiver selecionado
getSelectedIndex() – Devolve o número da linha do item selecionado. Em nosso projeto o JComboBox terá as seguintes propriedades:
PROPRIEDADE VALOR
Nome da Variável comboConta
Model Conta padrao, Conta popular
Podemos também adicionar as opções via design.
Clique com o botão direito do mouse, no menu suspenso escolha Propriedades. Nas propriedades, localize model, clique no botão [...].
Figura 2 - Acessando os itens do JComboBox
Quando o editor abrir podemos colocar cada opção em uma linha.
Figura 3 - Inserindo valores num JComboBox Clique em OK para finalizar.
EVENTOS DE BOTÕES
Encerrada a construção da janela da aplicação, vamos agora escrever o código de clique nos botões.
EVENTO DO BOTÃO SAIR
O botão Sair (btnSair), da mesma forma que vimos em outras janelas, pode fechar uma janela ou encerrar a aplicação. Dê um duplo clique nele para gerar o código do evento. Insira o trecho seguinte que fará a aplicação ser encerrada:
private void btnSairActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0);
}
EVENTO DO BOTÃO LIMPAR
O botão Limpar (btnLimpar) executará a mesma ação já vista. Limpará o conteúdo dos campos de texto. Insira o código seguinte:
private void btnLimparActionPerformed(java.awt.event.ActionEvent evt) { // Altera o valor dos campos de texto para vazio.
txtNome.setText(""); txtQuantPulso.setText(""); txtTelefone.setText(""); txtValorPulso.setText(""); txtAssinatura.setText("");
// Posiciona (focaliza) o cursor no campo “txtNome”.
txtNome.requestFocus(); }
Código relativamente simples, apenas altera o conteúdo de todos os campos de texto para vazio (“”) e posiciona o cursor na caixa txtNome.
EVENTO DO BOTÃO CALCULAR
No evento desse botão vamos, a partir do valor selecionado na Caixa de Combinação, escolher uma ação a ser executada. Dê dois cliques no botão para gerar o código e insira o trecho seguinte:
private void btnCalcularActionPerformed(java.awt.event.ActionEvent evt) { // Verifica se o item selecionado na "Caixa de Combinação" pertence ao índice(0).
if (comboConta.getSelectedIndex() == 0){ // Instancia a classe ContaPadrão.
ContaPadrao cpa = new ContaPadrao();
// Passa valores dos campos de texto para a classe.
cpa.setNome(txtNome.getText());
cpa.setTelefone(txtTelefone.getText());
cpa.setValorPulso(Double.parseDouble(txtValorPulso.getText())); cpa.setQuantPulso(Integer.parseInt(txtQuantPulso.getText())); cpa.setAssinatura(Double.parseDouble(txtAssinatura.getText())); // Executa o método de Calcular validando os valores.
try{
// Exibe o resultado numa caixa de diálogo.
JOptionPane.showMessageDialog(null, "Valor a pagar: " + cpa.CalcularConta());
}
catch(Exception erro){
// Exibe mensagem de erro em caso de não conseguir executar o cálculo.
JOptionPane.showMessageDialog(null, "Verifique valores."); }
} else{
// Instancia a classe ContaPopular.
ContaPopular cpo = new ContaPopular();
// Passa valores dos campos de texto para a classe.
cpo.setNome(txtNome.getText());
cpo.setTelefone(txtTelefone.getText());
cpo.setValorPulso(Double.parseDouble(txtValorPulso.getText())); cpo.setQuantPulso(Integer.parseInt(txtQuantPulso.getText())); // Executa o método de Calcular validando os valores.
try{
// Exibe o resultado numa caixa de diálogo.
JOptionPane.showMessageDialog(null, "Valor a pagar: " + cpo.CalcularConta());
catch(Exception erro){
// Exibe mensagem de erro em caso de não conseguir executar o cálculo.
JOptionPane.showMessageDialog(null, "Verifique valores."); }
} }
Esse trecho de código é o mais longo. Utilizamos uma estrutura if – else para testar uma condição. if (comboConta.getSelectedIndex() == 0){ ContaPadrão... } else { ContaPopular... }
Na condição, verificamos qual índice do comboConta está selecionado, se o índice for “0”, sabemos que o usuário selecionou a Conta Padrão, então o código no primeiro bloco será executado. Se o índice selecionado for “1”, quer dizer que o usuário selecionou a Conta Popular, então o código no bloco else será executado.
O BLOCO IF
// Instancia a classe ContaPadrão.
ContaPadrao cpa = new ContaPadrao();
Aqui, a classe ContaPadrão é instanciada na variável cpa.
// Passa valores dos campos de texto para a classe.
cpa.setNome(txtNome.getText());
cpa.setTelefone(txtTelefone.getText());
cpa.setValorPulso(Double.parseDouble(txtValorPulso.getText())); cpa.setQuantPulso(Integer.parseInt(txtQuantPulso.getText())); cpa.setAssinatura(Double.parseDouble(txtAssinatura.getText()));
Em seguida, enviamos os valores dos campos de texto para a função set da classe fazendo com que os valores de suas variáveis sejam alterados.
// Executa o método de Calcular validando os valores.
try{
// Exibe o resultado numa caixa de diálogo.
JOptionPane.showMessageDialog(null, "Valor a pagar: " + cpa.CalcularConta()); }
catch(Exception erro){
// Exibe mensagem de erro em caso de não conseguir executar o cálculo.
JOptionPane.showMessageDialog(null, "Verifique valores."); }
Finalizamos o primeiro trecho envolvendo a chamada ao método CalcularConta()
dentro de um bloco try-catch, para caso um valor inválido seja inserido o programa não pare, mas trate o erro exibindo uma caixa de diálogo para o usuário.
O BLOCO ELSE
Como utilizamos apenas duas opções no comboConta, colocamos o código para a segunda opção no bloco else.
// Instancia a classe ContaPopular.
ContaPopular cpo = new ContaPopular();
Aqui, a classe ContaPopular é instanciada na variável cpo.
// Passa valores dos campos de texto para a classe.
cpo.setNome(txtNome.getText());
cpo.setTelefone(txtTelefone.getText());
cpo.setValorPulso(Double.parseDouble(txtValorPulso.getText())); cpo.setQuantPulso(Integer.parseInt(txtQuantPulso.getText()));
Em seguida, enviamos os valores dos campos de texto para a função set da classe fazendo com que os valores de suas variáveis sejam alterados. Note que a classe ContaPopular não possui o campo Assinatura, portanto não pegamos o valor deste campo de texto.
// Executa o método de Calcular validando os valores.
try{
// Exibe o resultado numa caixa de diálogo.
JOptionPane.showMessageDialog(null, "Valor a pagar: " + cpo.CalcularConta()); }
catch(Exception erro){
// Exibe mensagem de erro em caso de não conseguir executar o cálculo.
JOptionPane.showMessageDialog(null, "Verifique valores."); }
Finalizamos este trecho da mesma forma que o primeiro, envolvendo a chamada ao método CalcularConta() dentro de um bloco try-catch, para o tratamento de um possível erro e a caixa de diálogo ser exibida ao usuário.