Nesse código meu objetivo é fazer uma calculadora funcional que possa funcionar semelhante ao do windowns, pelo menos para cálculos básicos. O que eu gostaria é de ideias de como posso fazer com que essa calculadora retire os dados que eu passo no JTextArea e compile como uma conta mesmo, se há algum comando do qual eu consiga retirar apenas os números e dps adicionar os símbolos para que assim, ocorra a conta que eu passei.
Segue o código abaixo que executa um JFrame contendo todos os botões de numerais e de sinais e também a minha tentativa inicial de como fazer essa conta funcionar.
public class Calculator {
JFrame janela;
JButton zero, um, dois, tres, quatro, cinco, seis, sete, oito, nove, delete, divide,multi, soma, sub, perc, resultado, virgula, backspace;
JTextArea campo;
String text = " ";
DecimalFormat dc = new DecimalFormat( “0.00” );
Double valor, valor2;
public void iniciar() {
//Definição da janela
Font tamanhoAu = new Font("HEY", Font.BOLD, 27);
janela = new JFrame("Calculadora");
janela.setSize(300, 400);
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(null);
janela.setVisible(true);
campo = new JTextArea();
campo.setBounds(10, 50, 90, 50);
campo.setFont(tamanhoAu);
JScrollPane sc = new JScrollPane(campo);
sc.setBounds(10, 50, 270, 50);
//Criação dos Botoes
zero = new JButton("0");
zero.setBounds(10, 235, 105, 30);
zero.addActionListener(new zeroB());
um = new JButton("1");
um.setBounds(10, 200, 50, 30);
um.addActionListener(new umB());
dois = new JButton("2");
dois.setBounds(65, 200, 50, 30);
dois.addActionListener(new doisB());
tres = new JButton("3");
tres.setBounds(120, 200, 50, 30);
tres.addActionListener(new doisB());
quatro = new JButton("4");
quatro.setBounds(10, 165, 50, 30);
quatro.addActionListener(new quatroB());
cinco = new JButton("5");
cinco.setBounds(65, 165, 50, 30);
cinco.addActionListener(new cincoB());
seis = new JButton("6");
seis.setBounds(120, 165, 50, 30);
seis.addActionListener(new seisB());
sete = new JButton("7");
sete.setBounds(10, 130, 50, 30);
sete.addActionListener(new seteB());
oito = new JButton("8");
oito.setBounds(65, 130, 50, 30);
oito.addActionListener(new oitoB());
nove = new JButton("9");
nove.setBounds(120, 130, 50, 30);
nove.addActionListener(new noveB());
divide = new JButton(" / ");
divide.setBounds(175, 130, 50, 30);
divide.addActionListener(new divideB());
multi = new JButton(" * ");
multi.setBounds(175, 165, 50, 30);
multi.addActionListener(new multiB());
soma = new JButton(" + ");
soma.setBounds(175, 235, 50, 30);
soma.addActionListener(new somaB());
sub = new JButton(" - ");
sub.setBounds(175, 200, 50, 30);
sub.addActionListener(new subB());
perc = new JButton("%");
perc.setBounds(230, 130, 50, 30);
perc.addActionListener(new percB());
resultado = new JButton("=");
resultado.setBounds(230, 200, 50, 65);
resultado.addActionListener(new resultadoB());
virgula = new JButton(",");
virgula.setBounds(120, 235, 50, 30);
virgula.addActionListener(new virgulaB());
backspace = new JButton("<--");
backspace.setBounds(230, 165, 50, 30);
backspace.addActionListener(new apagaB());
delete = new JButton("C");
janela.getContentPane().add(zero);
janela.getContentPane().add(um);
janela.getContentPane().add(dois);
janela.getContentPane().add(tres);
janela.getContentPane().add(quatro);
janela.getContentPane().add(cinco);
janela.getContentPane().add(seis);
janela.getContentPane().add(sete);
janela.getContentPane().add(oito);
janela.getContentPane().add(nove);
janela.getContentPane().add(divide);
janela.getContentPane().add(multi);
janela.getContentPane().add(soma);
janela.getContentPane().add(sub);
janela.getContentPane().add(perc);
janela.getContentPane().add(virgula);
janela.getContentPane().add(resultado);
janela.getContentPane().add(backspace);
janela.getContentPane().add(sc);
}
public class zeroB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + zero.getText();
campo.setText(text);
}
}
public class umB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + um.getText();
campo.setText(text);
}
}
public class doisB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + dois.getText();
campo.setText(text);
}
}
public class tresB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + tres.getText();
campo.setText(text);
}
}
public class quatroB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + quatro.getText();
campo.setText(text);
}
}
public class cincoB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + cinco.getText();
campo.setText(text);
}
}
public class seisB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + seis.getText();
campo.setText(text);
}
}
public class seteB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + sete.getText();
campo.setText(text);
}
}
public class oitoB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + oito.getText();
campo.setText(text);
}
}
public class noveB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + nove.getText();
campo.setText(text);
}
}
public class divideB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Double valor = Double.parseDouble(campo.getText());
text = text + divide.getText();
campo.setText(text);
}
}
public class multiB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + multi.getText();
campo.setText(text);
}
}
public class subB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + sub.getText();
campo.setText(text);
}
}
public class somaB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + soma.getText();
campo.setText(text);
}
}
public class virgulaB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + virgula.getText();
campo.setText(text);
}
}
public class percB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
text = text + perc.getText();
campo.setText(text);
}
}
public class resultadoB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
Double sum1 = Double.parseDouble(campo.getText());
System.out.println(sum1);
campo.setText(dc.format(sum1));
text = " ";
}
}
public class apagaB implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
try {
text = "";
String str = campo.getText();
StringBuilder apaga = new StringBuilder(str);
str = String.valueOf(apaga.deleteCharAt(str.length()-1));
campo.setText(str);
}catch(StringIndexOutOfBoundsException ERRO ) {
}
}
}
public Calculator() {
iniciar();
}
public static void main(String[] args) {
new Calculator();
}
}