Skip to content

Instantly share code, notes, and snippets.

Created March 30, 2016 15:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/361e2c3f7032cfeebb11ef219f83a5bc to your computer and use it in GitHub Desktop.
Save anonymous/361e2c3f7032cfeebb11ef219f83a5bc to your computer and use it in GitHub Desktop.
CalculadoraGUI
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());
}
}
}
}
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;
}
}
@spencerekroth
Copy link

já vi isso em algum lugar antes...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment