Vídeo Aula – Programando em Java #03

Vídeo Aula – Programando em Java #03

Olá Pessoal…
Continuo as vídeo-aulas sobre Java. Hoje irei mostrar como montar uma janela básica em java, uma simples calculadora.


Pessoal, quem perdeu as aulas anteriores, pode acessá-las logo abaixo:
#01 – Instalação de Java e Programa Básico com função externa
#02 – Orientação a Objeto em Java

Na aula de hoje, irei mostrar como fazer uma janela básica e todos os testes para fazer cálculos, sendo a janela um exemplo básico de calculadora, como imagem abaixo:

Calculadora básica em Java
Calculadora básica em Java

Vídeo:

Aula03 from Dan Atilio on Vimeo.

Códigos Fontes Utilizados:
Classe: Aula03 (Aula03.java)

//Bibliotecas
import javax.swing.*;
import java.awt.*;
import java.awt.event.*; 
import java.lang.*; 

//Classe Aula03 que irá conter as configurações, componentes e ações da janela
class Aula03 extends JFrame implements ActionListener
{
 //Componentes gráficos
 private JLabel lblVal1, lblVal2, lblResp;
 private JComboBox cmbTeste;
 private JTextField edtTexto;
 private JRadioButton radSoma, radSub, radDiv, radMult;
 private ButtonGroup bgrGrupo;
 private JButton btnLimpar, btnSair, btnConfirmar;

 //Construtor dos Componentes
 public Aula03() 
 {
  int i;
  //Layout
  setLayout(null);

  //___.setBounds(coluna, linha, comprimento, altura);

  //Labels
  lblVal1 = new JLabel("Valor 1:"); //Cria o Componente
  lblVal1.setBounds(20,20,100,20);  //Posiciona
  lblVal1.setForeground(Color.BLUE);//Coloca cor de letra

  lblVal2 = new JLabel("Valor 2:");
  lblVal2.setBounds(20,40,100,20);
  lblVal2.setForeground(Color.BLUE);

  lblResp = new JLabel("");
  lblResp.setBounds(180,180,200,20);
  lblResp.setForeground(Color.BLUE);

  //Combo
  cmbTeste = new JComboBox();
  for (i=0; i<=10; i++)
   cmbTeste.addItem(i);
  cmbTeste.setBounds(260,20,200,20);
  cmbTeste.setForeground(Color.BLUE);
  cmbTeste.enable(false);  //Desativa o componente

  //TextFields
  edtTexto = new JTextField(5); 
  edtTexto.setBounds(260,40,200,20);
  edtTexto.setForeground(Color.BLUE);
  edtTexto.setEditable(false); //Desativa o componente
  edtTexto.setText("0");       //Deixa o texto inicial como 0

  //Radio
  radSoma = new JRadioButton("Adição");
  radSoma.setBounds(20,80,100,20);
  radSoma.setForeground(Color.ORANGE);
  radSoma.setBackground(Color.WHITE); //Coloca cor de Fundo
  radSoma.addActionListener(this);    //Adiciona ação ao clicar

  radSub = new JRadioButton("Subtração");
  radSub.setBounds(120,80,100,20);
  radSub.setForeground(Color.ORANGE);
  radSub.setBackground(Color.WHITE);
  radSub.addActionListener(this);

  radDiv = new JRadioButton("Divisão");
  radDiv.setBounds(220,80,100,20);
  radDiv.setForeground(Color.ORANGE);
  radDiv.setBackground(Color.WHITE);
  radDiv.addActionListener(this);

  radMult = new JRadioButton("Multiplicação");
  radMult.setBounds(320,80,120,20);
  radMult.setForeground(Color.ORANGE);
  radMult.setBackground(Color.WHITE);
  radMult.addActionListener(this);

  //Grupo - Radios
  bgrGrupo = new ButtonGroup();
  bgrGrupo.add(radSoma);
  bgrGrupo.add(radSub);
  bgrGrupo.add(radDiv);
  bgrGrupo.add(radMult);

  //Botões
  btnConfirmar = new JButton("Confirmar");
  btnConfirmar.setBounds(40,120,120,20);
  btnConfirmar.setForeground(Color.RED);
  btnConfirmar.setToolTipText("Efetua o cálculo");//Mostra mensagem ao posicionar o cursor sobre o Botão
  btnConfirmar.setMnemonic('C');                  //Ativa a opção de Segurar a tecla Alt e pressionar
  btnConfirmar.addActionListener(this);
  btnConfirmar.setEnabled(false);

  btnLimpar = new JButton("Limpar");
  btnLimpar.setBounds(180,120,120,20);
  btnLimpar.setForeground(Color.RED);
  btnLimpar.setToolTipText("Limpe o programa!");
  btnLimpar.setMnemonic('L');
  btnLimpar.addActionListener(this);

  btnSair = new JButton("Sair");
  btnSair.setBounds(320,120,120,20);
  btnSair.setForeground(Color.RED);
  btnSair.setToolTipText("Fecha o programa!");
  btnSair.setMnemonic('S');
  btnSair.addActionListener(this);

  //Adicionando
  add(lblVal1);
  add(lblVal2);
  add(lblResp);
  add(cmbTeste);
  add(edtTexto);
  add(radSoma);
  add(radSub);
  add(radDiv);
  add(radMult);
  add(btnLimpar);
  add(btnConfirmar);
  add(btnSair);
 }

 //Ações (ao clicar com Mouse)
 public void actionPerformed(ActionEvent e)
 {
  int nResp, nVal1, nVal2;
  String sTotal;
  //Testando para ver se algum botão Radio foi clicado, para poder ativar outros componentes
  if((e.getSource() == radSoma) ||
     (e.getSource() == radSub)  ||
     (e.getSource() == radDiv)  ||
     (e.getSource() == radMult))
  {
   cmbTeste.enable(true);
   cmbTeste.setBackground(Color.WHITE);
   edtTexto.setEditable(true);
   btnConfirmar.setEnabled(true);
  }

  //Testando se o botão Limpar foi clicado para limpar os dados dos outros componentes
  if(e.getSource() == btnLimpar)
  {
   edtTexto.setText("0");
   cmbTeste.setSelectedIndex(0);
   lblResp.setText("");
   edtTexto.grabFocus();
  }

  //Testando se o botão Sair foi clicado Pergunta ao usuário se ele quer sair, se sim para a execução do programa
  if (e.getSource() == btnSair)
  {
   nResp=JOptionPane.showConfirmDialog(null,"Quer
         mesmo sair?", "Continuar",0);
   if(nResp==0) super.dispose();
  }

  //Testa se o botão Confirmar foi clicado
  if (e.getSource() == btnConfirmar)
  {
   //Gera a resposta inicial ("Y + Z = ")
   sTotal=cmbTeste.getSelectedItem().
          toString();
   if (radSoma.isSelected()) sTotal+=" + ";
   if (radSub.isSelected()) sTotal+=" - ";
   if (radDiv.isSelected()) sTotal+=" / ";
   if (radMult.isSelected()) sTotal+=" * ";
   sTotal+=edtTexto.getText()+" = ";
   //Tenta a conversão, ou seja, se o valor realmente é numérico
   try { 
    nVal1=Integer.parseInt(cmbTeste.getSelectedItem()
          .toString());
    nVal2=Integer.parseInt(edtTexto.getText());
   }
   //Se não converter, mostra a mensagem de erro
   catch (Exception exc) { 
    JOptionPane.showMessageDialog(null,"Valores
                incorretos!","Erro",2);
    edtTexto.grabFocus();
    return;
   }

   //Caso for Divisão e o Valor 2 for 0 mostra erro de divisão não pode ser por 0
   if ((radDiv.isSelected())&&(nVal2==0)){
    JOptionPane.showMessageDialog(null,"Valor não pode
                ser dividido por 0!","Erro",2);
    edtTexto.grabFocus();
    return;
   }

   //Termina o conteúdo da resposta, fazendo o cálculo
   if (radSoma.isSelected()) sTotal+=nVal1+nVal2;
   if (radSub.isSelected()) sTotal+=nVal1-nVal2;
   if (radDiv.isSelected()) sTotal+=nVal1/nVal2;
   if (radMult.isSelected()) sTotal+=nVal1*nVal2;
   //Mostra a resposta
   lblResp.setText(sTotal);
  }
 }

 //Programa principal que contém configuração da janela
 public static void main(String arg[])
 {
  Aula03 a = new Aula03(); //cria Janela
  a.setSize(500,270); //coloca um tamanho
  a.setLocationRelativeTo(null); //deixa janela no centro
  a.setTitle("Aula 03"); //Título da janela
  a.getContentPane().setBackground(Color.WHITE);
  a.setResizable(false); //Não deixa redimencionar
  a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  //a.setUndecorated(true); //tira a barra de titulos
  a.setVisible(true); //Mostra a Janela
 }

}

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/Java.

Observação:
Tive que quebrar o texto de algumas linhas, pois o conteúdo não coube completamente, se der algum problema na cópia do conteúdo, é só desafazer as quebras de linha que fiz.

Resumo:
Nessa aula, vimos como criar uma janela e fazer testes com componentes como botões.

Na próxima postagem irei mostrar como fazer uma integração com arquivos texto (provavelmente xml).

Download do código fonte:
Download pelo OneDrive
Ou
Download pelo 4Shared

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta

%d blogueiros gostam disto: