Created
March 30, 2016 15:07
-
-
Save anonymous/361e2c3f7032cfeebb11ef219f83a5bc to your computer and use it in GitHub Desktop.
CalculadoraGUI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.calculadora; | |
import java.awt.event.ActionEvent; | |
import java.awt.event.ActionListener; | |
import javax.swing.JButton; | |
public class CalculadoraGUI extends javax.swing.JFrame { | |
public CalculadoraGUI() { | |
initComponents(); | |
this.fieldValorAnterior.setText(""); | |
this.fieldValorAtual.setText(""); | |
this.btn0.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn1.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn2.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn3.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn4.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn5.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn6.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn7.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn8.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btn9.addActionListener(new AcaoBotaoNumericoListener()); | |
this.btnAdicao.addActionListener(new AcaoBotaoOperacaoListener()); | |
this.btnSubtracao.addActionListener(new AcaoBotaoOperacaoListener()); | |
this.btnMultiplicacao.addActionListener(new AcaoBotaoOperacaoListener()); | |
this.btnDivisao.addActionListener(new AcaoBotaoOperacaoListener()); | |
this.btnPontoSeparador.addActionListener(new ActionListener() { | |
@Override | |
public void actionPerformed(ActionEvent e) { | |
String strValorAtual = fieldValorAtual.getText(); | |
String strpontoFlutuante = ((JButton) e.getSource()).getText(); | |
if (!strValorAtual.contains(".") && strValorAtual.isEmpty()) { | |
strValorAtual = "0" + strpontoFlutuante; | |
} else if (!strValorAtual.contains(".") && !strValorAtual.isEmpty()) { | |
strValorAtual += strpontoFlutuante; | |
} | |
fieldValorAtual.setText(strValorAtual); | |
} | |
}); | |
this.btnIgual.addActionListener(new ActionListener() { | |
@Override | |
public void actionPerformed(ActionEvent e) { | |
String valorAtual = fieldValorAtual.getText(); | |
String valorAnterior = fieldValorAnterior.getText(); | |
if (!valorAtual.isEmpty() && !valorAnterior.isEmpty()) { | |
fieldValorAtual.setText(efetuarCalculo(valorAnterior, valorAtual)); | |
} | |
} | |
}); | |
this.btnLimpar.addActionListener(new ActionListener() { | |
@Override | |
public void actionPerformed(ActionEvent e) { | |
fieldValorAnterior.setText(""); | |
fieldValorAtual.setText(""); | |
} | |
}); | |
} | |
private String efetuarCalculo(String valorAnterior, String valorAtual) { | |
String valores[] = (valorAnterior + " " + valorAtual).split("\\s"); | |
OperacaoAritmetica operacao = new OperacaoAritmetica(valores[1], Double.parseDouble(valores[0]), Double.parseDouble(valores[2])); | |
fieldValorAnterior.setText(""); | |
String resultado; | |
try { | |
double res = operacao.calcular(); | |
resultado = res % 1 == 0 ? Math.round(res) + "" : res + ""; | |
} catch (ArithmeticException ex) { | |
resultado = "!ERROR"; | |
} | |
return resultado; | |
} | |
@SuppressWarnings("unchecked") | |
// <editor-fold defaultstate="collapsed" desc="Generated Code"> | |
private void initComponents() { | |
fieldValorAtual = new javax.swing.JTextField(); | |
fieldValorAnterior = new javax.swing.JTextField(); | |
painelNumeros = new javax.swing.JPanel(); | |
btn0 = new javax.swing.JButton(); | |
btn7 = new javax.swing.JButton(); | |
btn8 = new javax.swing.JButton(); | |
btn9 = new javax.swing.JButton(); | |
btn6 = new javax.swing.JButton(); | |
btn5 = new javax.swing.JButton(); | |
btn4 = new javax.swing.JButton(); | |
btn1 = new javax.swing.JButton(); | |
btn2 = new javax.swing.JButton(); | |
btn3 = new javax.swing.JButton(); | |
btnPontoSeparador = new javax.swing.JButton(); | |
btnIgual = new javax.swing.JButton(); | |
painelOperadores = new javax.swing.JPanel(); | |
btnMultiplicacao = new javax.swing.JButton(); | |
btnSubtracao = new javax.swing.JButton(); | |
btnDivisao = new javax.swing.JButton(); | |
btnAdicao = new javax.swing.JButton(); | |
btnLimpar = new javax.swing.JButton(); | |
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); | |
fieldValorAtual.setFont(new java.awt.Font("Verdana", 0, 16)); // NOI18N | |
fieldValorAtual.setHorizontalAlignment(javax.swing.JTextField.RIGHT); | |
fieldValorAtual.setBorder(null); | |
fieldValorAtual.setFocusable(false); | |
fieldValorAnterior.setFont(new java.awt.Font("Verdana", 0, 11)); // NOI18N | |
fieldValorAnterior.setHorizontalAlignment(javax.swing.JTextField.RIGHT); | |
fieldValorAnterior.setBorder(null); | |
fieldValorAnterior.setFocusable(false); | |
btn0.setText("0"); | |
btn7.setText("7"); | |
btn8.setText("8"); | |
btn9.setText("9"); | |
btn6.setText("6"); | |
btn5.setText("5"); | |
btn4.setText("4"); | |
btn1.setText("1"); | |
btn2.setText("2"); | |
btn3.setText("3"); | |
btnPontoSeparador.setText("."); | |
btnIgual.setText("="); | |
btnIgual.setMargin(new java.awt.Insets(2, 12, 2, 12)); | |
javax.swing.GroupLayout painelNumerosLayout = new javax.swing.GroupLayout(painelNumeros); | |
painelNumeros.setLayout(painelNumerosLayout); | |
painelNumerosLayout.setHorizontalGroup( | |
painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(painelNumerosLayout.createSequentialGroup() | |
.addContainerGap() | |
.addGroup(painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(painelNumerosLayout.createSequentialGroup() | |
.addComponent(btn4, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btn5, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btn6, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addGroup(painelNumerosLayout.createSequentialGroup() | |
.addComponent(btn7, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btn8, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btn9, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addGroup(painelNumerosLayout.createSequentialGroup() | |
.addGroup(painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) | |
.addComponent(btn1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
.addComponent(btn0, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addGroup(painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(painelNumerosLayout.createSequentialGroup() | |
.addComponent(btn2, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btn3, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addGroup(painelNumerosLayout.createSequentialGroup() | |
.addComponent(btnPontoSeparador, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btnIgual, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE))))) | |
.addGap(5, 5, 5)) | |
); | |
painelNumerosLayout.setVerticalGroup( | |
painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, painelNumerosLayout.createSequentialGroup() | |
.addGap(5, 5, 5) | |
.addGroup(painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | |
.addComponent(btn7, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btn8, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btn9, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addGroup(painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | |
.addComponent(btn4, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btn5, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btn6, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addGroup(painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | |
.addComponent(btn1, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btn2, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btn3, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addGroup(painelNumerosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) | |
.addComponent(btn0, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btnPontoSeparador, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btnIgual, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addGap(5, 5, 5)) | |
); | |
btnMultiplicacao.setText("*"); | |
btnSubtracao.setText("-"); | |
btnDivisao.setText("/"); | |
btnAdicao.setText("+"); | |
btnAdicao.setMargin(new java.awt.Insets(2, 12, 2, 12)); | |
javax.swing.GroupLayout painelOperadoresLayout = new javax.swing.GroupLayout(painelOperadores); | |
painelOperadores.setLayout(painelOperadoresLayout); | |
painelOperadoresLayout.setHorizontalGroup( | |
painelOperadoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(painelOperadoresLayout.createSequentialGroup() | |
.addGap(5, 5, 5) | |
.addGroup(painelOperadoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addComponent(btnMultiplicacao, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btnDivisao, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btnSubtracao, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(btnAdicao, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addGap(5, 5, 5)) | |
); | |
painelOperadoresLayout.setVerticalGroup( | |
painelOperadoresLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(painelOperadoresLayout.createSequentialGroup() | |
.addGap(5, 5, 5) | |
.addComponent(btnDivisao, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btnMultiplicacao, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btnSubtracao, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) | |
.addComponent(btnAdicao, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addGap(5, 5, 5)) | |
); | |
btnLimpar.setText("Limpar"); | |
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); | |
getContentPane().setLayout(layout); | |
layout.setHorizontalGroup( | |
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(layout.createSequentialGroup() | |
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(layout.createSequentialGroup() | |
.addComponent(painelNumeros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addGap(0, 0, 0) | |
.addComponent(painelOperadores, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) | |
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() | |
.addGap(5, 5, 5) | |
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) | |
.addComponent(fieldValorAnterior) | |
.addComponent(fieldValorAtual)))) | |
.addGap(5, 5, 5)) | |
.addGroup(layout.createSequentialGroup() | |
.addContainerGap() | |
.addComponent(btnLimpar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
.addContainerGap()) | |
); | |
layout.setVerticalGroup( | |
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addGroup(layout.createSequentialGroup() | |
.addContainerGap() | |
.addComponent(fieldValorAnterior, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addGap(0, 0, 0) | |
.addComponent(fieldValorAtual, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) | |
.addComponent(btnLimpar, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) | |
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) | |
.addComponent(painelOperadores, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) | |
.addComponent(painelNumeros, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) | |
); | |
pack(); | |
}// </editor-fold> | |
public static void main(String args[]) { | |
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> | |
try { | |
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { | |
if ("Windows".equals(info.getName())) { | |
javax.swing.UIManager.setLookAndFeel(info.getClassName()); | |
break; | |
} | |
} | |
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { | |
} | |
//</editor-fold> | |
//</editor-fold> | |
java.awt.EventQueue.invokeLater(new Runnable() { | |
@Override | |
public void run() { | |
CalculadoraGUI calc = new CalculadoraGUI(); | |
calc.setLocationRelativeTo(null); | |
calc.setVisible(true); | |
} | |
}); | |
} | |
// Variables declaration - do not modify | |
private javax.swing.JButton btn0; | |
private javax.swing.JButton btn1; | |
private javax.swing.JButton btn2; | |
private javax.swing.JButton btn3; | |
private javax.swing.JButton btn4; | |
private javax.swing.JButton btn5; | |
private javax.swing.JButton btn6; | |
private javax.swing.JButton btn7; | |
private javax.swing.JButton btn8; | |
private javax.swing.JButton btn9; | |
private javax.swing.JButton btnAdicao; | |
private javax.swing.JButton btnDivisao; | |
private javax.swing.JButton btnIgual; | |
private javax.swing.JButton btnLimpar; | |
private javax.swing.JButton btnMultiplicacao; | |
private javax.swing.JButton btnPontoSeparador; | |
private javax.swing.JButton btnSubtracao; | |
private javax.swing.JTextField fieldValorAnterior; | |
private javax.swing.JTextField fieldValorAtual; | |
private javax.swing.JPanel painelNumeros; | |
private javax.swing.JPanel painelOperadores; | |
// End of variables declaration | |
class AcaoBotaoNumericoListener implements ActionListener { | |
@Override | |
public void actionPerformed(ActionEvent e) { | |
JButton btn = (JButton) e.getSource(); | |
String valorAtual = fieldValorAtual.getText(); | |
fieldValorAtual.setText(valorAtual + btn.getText()); | |
} | |
} | |
class AcaoBotaoOperacaoListener implements ActionListener { | |
@Override | |
public void actionPerformed(ActionEvent e) { | |
JButton btn = (JButton) e.getSource(); | |
String valorAtual = fieldValorAtual.getText(); | |
String valorAnterior = fieldValorAnterior.getText(); | |
if (!valorAtual.isEmpty() && !valorAnterior.isEmpty()) { | |
fieldValorAtual.setText(""); | |
fieldValorAnterior.setText(efetuarCalculo(valorAnterior, valorAtual) + " " + btn.getText()); | |
} else if (!valorAtual.isEmpty() && valorAnterior.isEmpty()) { | |
fieldValorAtual.setText(""); | |
fieldValorAnterior.setText(valorAtual + " " + btn.getText()); | |
} else if (valorAtual.isEmpty() && !valorAnterior.isEmpty()) { | |
fieldValorAnterior.setText(valorAnterior.substring(0, valorAnterior.length() - 1) + btn.getText()); | |
} | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.calculadora; | |
public class OperacaoAritmetica { | |
private final String SOMA = "+"; | |
private final String SUBTRACAO = "-"; | |
private final String MULTIPLICACAO = "*"; | |
private final String DIVISAO = "/"; | |
private String operacao; | |
private double valor1; | |
private double valor2; | |
public OperacaoAritmetica(String sinal, double valor1, double valor2) { | |
this.valor1 = valor1; | |
this.valor2 = valor2; | |
this.operacao = sinal; | |
} | |
public double calcular() { | |
switch (operacao) { | |
case SOMA: | |
return somar(valor1, valor2); | |
case SUBTRACAO: | |
return subtrair(valor1, valor2); | |
case MULTIPLICACAO: | |
return multiplicar(valor1, valor2); | |
case DIVISAO: | |
return dividir(valor1, valor2); | |
default: | |
throw new IllegalArgumentException("Operador não é válido"); | |
} | |
} | |
private double somar(double valor1, double valor2) { | |
return valor1 + valor2; | |
} | |
private double subtrair(double valor1, double valor2) { | |
return valor1 - valor2; | |
} | |
private double multiplicar(double valor1, double valor2) { | |
return valor1 * valor2; | |
} | |
private double dividir(double valor1, double valor2) { | |
if (valor2 == 0) { | |
throw new ArithmeticException("Não é possivel dividir por zero."); | |
} | |
return valor1 / valor2; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
já vi isso em algum lugar antes...