O que há de errado com minha operação de soma?

Gostaria de saber que erro é essa que está dando na operação de soma da minha calculadora? Espero não estar sendo impertinente!

[code]import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class CalculadoraMPOO extends JFrame {
JButton mc, mr, ms, mmais, mmenos;
JButton apaga, ce, c, sinal, raiz;
JButton jb1, jb2, jb3, jb4, jb5, jb6, jb7, jb8, jb9, jb0, jb00;
JButton soma, multiplicacao, divisao, subtracao, igualdade;
JButton ln, porcentagem, virgula;

JTextField tfTela1, tfTela2;

Font fonte;

char operacao;

String ant;

double num1, num2, resultado;

public CalculadoraMPOO() {
	super("Calculadora");
	
	Container c1 = getContentPane();
	
	GridBagLayout gbLayout = new GridBagLayout();
	GridBagConstraints gbc = new GridBagConstraints();
	
	Color bgCalc = new Color(199, 210, 249);
	Color botao = new Color(233, 235, 255);
			
	c1.setLayout(gbLayout);
	c1.setBackground(bgCalc);
	
	fonte = new Font("Courrier",Font.BOLD, 25);		
			
	tfTela1 = new JTextField();
	tfTela2 = new JTextField();
	tfTela2.setFont(fonte);
	tfTela1.setBorder(null);
	tfTela2.setBorder(null);
	tfTela1.setHorizontalAlignment(tfTela1.RIGHT);
	tfTela2.setHorizontalAlignment(tfTela2.RIGHT);		
	tfTela1.setEditable(false);
	tfTela2.setEditable(false);
	tfTela1.setBackground(Color.WHITE);
	tfTela2.setBackground(Color.WHITE);
	
	mc = new JButton("MC");
	mr = new JButton("MR");
	ms = new JButton("MS");
	mmais = new JButton("M+");
	mmenos = new JButton("M-");
	
	apaga = new JButton("←");
	ce = new JButton("CE");
	c = new JButton("C");
	sinal = new JButton("±");
	raiz = new JButton("√");
	
	
	jb0 = new JButton("0");
	jb1 = new JButton("1");
	jb2 = new JButton("2");
	jb3 = new JButton("3");
	jb4 = new JButton("4");
	jb5 = new JButton("5");
	jb6 = new JButton("6");
	jb7 = new JButton("7");
	jb8 = new JButton("8");
	jb9 = new JButton("9");

	soma = new JButton("+");
	multiplicacao = new JButton("*");
	divisao = new JButton("/");
	subtracao = new JButton("-");
	igualdade = new JButton("=");
	igualdade.setFont(fonte);		

	ln = new JButton("1/x");
	porcentagem = new JButton("%");
	virgula = new JButton(",");
	
	jb0.setBackground(botao);
	jb1.setBackground(botao);
	jb2.setBackground(botao);
	jb3.setBackground(botao);
	jb4.setBackground(botao);
	jb5.setBackground(botao);
	jb6.setBackground(botao);
	jb7.setBackground(botao);
	jb8.setBackground(botao);
	jb9.setBackground(botao);
	virgula.setBackground(botao);
	
	gbc.fill = GridBagConstraints.BOTH;
	gbc.weightx = GridBagConstraints.BOTH;
	gbc.weighty = GridBagConstraints.BOTH;
		
	//2ª Linha
	gbc.insets = new Insets(5, 5, 5, 5);
		
	gbc.gridx = 0;
	gbc.gridy = 4;
	c1.add(mc, gbc);
	mc.addActionListener(new EventoBotao());
	
	gbc.gridx = 1;
	gbc.gridy = 4;
	c1.add(mr, gbc);
	mr.addActionListener(new EventoBotao());
	
	gbc.gridx = 2;
	gbc.gridy = 4;
	c1.add(ms, gbc);
	ms.addActionListener(new EventoBotao());
	
	gbc.gridx = 3;
	gbc.gridy = 4;
	c1.add(mmais, gbc);
	mmais.addActionListener(new EventoBotao());
	
	gbc.gridx = 4;
	gbc.gridy = 4;
	c1.add(mmenos, gbc);
	mmenos.addActionListener(new EventoBotao());
 
	//3ª Linha
	gbc.gridx = 0;
	gbc.gridy = 5;
	c1.add(apaga, gbc);
	apaga.addActionListener(new EventoBotao());
	
	gbc.gridx = 1;
	gbc.gridy = 5;
	c1.add(ce, gbc);
	ce.addActionListener(new EventoBotao());
	
	gbc.gridx = 2;
	gbc.gridy = 5;
	c1.add(c, gbc);
	c.addActionListener(new EventoBotao());
	
	gbc.gridx = 3;
	gbc.gridy = 5;
	c1.add(sinal, gbc);
	sinal.addActionListener(new EventoBotao());
	
	gbc.gridx = 4;
	gbc.gridy = 5;
	c1.add(raiz, gbc);
	raiz.addActionListener(new EventoBotao());
	
	//4ª Linha
	gbc.gridx = 0;
	gbc.gridy = 6;
	c1.add(jb7, gbc);
	jb7.addActionListener(new EventoBotao());
	
	gbc.gridx = 1;
	gbc.gridy = 6;
	c1.add(jb8, gbc);
	jb8.addActionListener(new EventoBotao());
	
	gbc.gridx = 2;
	gbc.gridy = 6;
	c1.add(jb9, gbc);
	jb9.addActionListener(new EventoBotao());
	
	gbc.gridx = 3;
	gbc.gridy = 6;
	c1.add(divisao, gbc);
	divisao.addActionListener(new EventoBotao());
	
	gbc.gridx = 4;
	gbc.gridy = 6;
	c1.add(porcentagem, gbc);
	porcentagem.addActionListener(new EventoBotao());
	
	//5ª Linha
	gbc.gridx = 0;
	gbc.gridy = 7;
	c1.add(jb4, gbc);
	jb4.addActionListener(new EventoBotao());
	
	gbc.gridx = 1;
	gbc.gridy = 7;
	c1.add(jb5, gbc);
	jb5.addActionListener(new EventoBotao());
	
	gbc.gridx = 2;
	gbc.gridy = 7;
	c1.add(jb6, gbc);
	jb6.addActionListener(new EventoBotao());
	
	gbc.gridx = 3;
	gbc.gridy = 7;
	c1.add(multiplicacao, gbc);
	multiplicacao.addActionListener(new EventoBotao());
	
	gbc.gridx = 4;
	gbc.gridy = 7;
	c1.add(ln, gbc);
	ln.addActionListener(new EventoBotao());
	
	//6ª Linha
	gbc.gridx = 0;
	gbc.gridy = 8;
	c1.add(jb1, gbc);
	jb1.addActionListener(new EventoBotao());
	
	gbc.gridx = 1;
	gbc.gridy= 8;
	c1.add(jb2, gbc);
	jb2.addActionListener(new EventoBotao());
	
	gbc.gridx = 2;
	gbc.gridy = 8;
	c1.add(jb3, gbc);
	jb3.addActionListener(new EventoBotao());
	
	gbc.gridx = 3;
	gbc.gridy = 8;
	c1.add(subtracao, gbc);
	subtracao.addActionListener(new EventoBotao());

	//7ª Linha
	gbc.gridx = 0;
	gbc.gridy = 9;
	gbc.gridwidth = 2;
	c1.add(jb0, gbc);
	jb0.addActionListener(new EventoBotao());
	
	gbc.gridx = 2;
	gbc.gridy = 9;
	gbc.gridwidth = 1;
	c1.add(virgula, gbc);
	virgula.addActionListener(new EventoBotao());
	
	gbc.gridx = 3;
	gbc.gridy = 9;
	c1.add(soma, gbc);
	soma.addActionListener(new EventoBotao());
	
	gbc.gridx = 4;
	gbc.gridy = 8;
	gbc.gridheight = 2;
	c1.add(igualdade, gbc);
	igualdade.addActionListener(new EventoBotao());
	
	//1ª Linha
	gbc.gridwidth = GridBagConstraints.REMAINDER;
	gbc.insets=new Insets(-2,5,-2,5);
	
	gbc.gridx = 0;
	gbc.gridy = 0;
	c1.add(tfTela1, gbc);
	
	gbc.gridx = 0;
	gbc.gridy = 2;
	c1.add(tfTela2, gbc);

	
	this.setSize(350, 450);
	this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	this.setVisible(true);
	this.setResizable(false);
	this.setLocationRelativeTo(null);
	
}

public class EventoBotao implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource() == jb0){
			clickBotao("0");
		}else if(e.getSource() == jb1){
			clickBotao("1");
			
		}else if(e.getSource() == jb2){
			clickBotao("2");
			
		}else if(e.getSource() == jb3){
			clickBotao("3");
			
		}else if(e.getSource() == jb4){
			clickBotao("4");
			
		}else if(e.getSource() == jb5){
			clickBotao("5");
			
		}else if(e.getSource() == jb6){
			clickBotao("6");
			
		}else if(e.getSource() == jb7){
			clickBotao("7");
			
		}else if(e.getSource() == jb8){
			clickBotao("8");
			
		}else if(e.getSource() == jb9){
			clickBotao("9");
			
		}else if(e.getSource() == virgula){
			clickBotao(",");
		
		}else if (e.getSource() == soma){
			clickOperacao('+');
			
		}else if (e.getSource() == subtracao){
			clickOperacao('-');
			
		}else if (e.getSource() == divisao){
			clickOperacao('/');
			
		}else if (e.getSource() == multiplicacao){
			clickOperacao('*');
					
		}else if (e.getSource() == igualdade){
			num2 = Double.parseDouble(tfTela2.getText());
			
			switch (operacao) {
				case '+':
					resultado = num1 + num2;
					break;
				}
			tfTela2.setText(String.valueOf(resultado));				
				
		}

}

public void clickOperacao(char op) {
	operacao = op;
	num1 = Double.parseDouble(tfTela1.getText());
	
	tfTela2.setText("");
}

public void clickBotao(String n) {
	ant = tfTela2.getText();
	ant = ant + n;	
	tfTela2.setText(ant);
	
}

}

public static void main(String[] args) {
	new CalculadoraMPOO();
}

}
[/code]

Olá, Filipe DeMolay!

você colocou tfTela1.getText() no método clickOperacao:

[code]public void clickOperacao(char op) {
operacao = op;
num1 = Double.parseDouble(tfTela1.getText());

    tfTela2.setText("");  

}[/code]

quando deveria ter colocado tfTela1.getText(), ficando assim:

[code]public void clickOperacao(char op) {
operacao = op;
num1 = Double.parseDouble(tfTela2.getText());

    tfTela2.setText("");  

}[/code]

Já no switch, você esqueceu de terminar, depois de pronto, ficará assim:

[code]switch (operacao) {
case ‘+’:
resultado = num1 + num2;
break;

case '-':
    resultado = num1 - num2;
    break;

case '/':
    resultado = num1 / num2;
    break;
  
case '*':
    resultado = num1 * num2;
    break;

}[/code]

Também observei que, quando clica no botão vírgula, você setou, na sua TextField, uma “,” ,porém, em inglês, nos números, é usado . no lugar de ,
então para não dar erro quando você fazer uma operação com número de ponto flutuante, deve colocar assim:

else if (e.getSource() == soma){ clickBotao("."); }

Espero que agora dê certo, cara. Se não der, me avise.