Estou fazendo uma calculadora em java para estudo de interface gráfica, mas não sei como faz a ação dos botões, meu código é esse:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
@SuppressWarnings("serial")
public class Calc extends JFrame{
JPanel panel = new JPanel();
GridBagLayout layout = new GridBagLayout();
GridBagConstraints grid = new GridBagConstraints();
JTextField field = new JTextField("");
JButton botao1 = new JButton("1");
JButton botao2 = new JButton("2");
JButton botao3 = new JButton("3");
JButton botao4 = new JButton("4");
JButton botao5 = new JButton("5");
JButton botao6 = new JButton("6");
JButton botao7 = new JButton("7");
JButton botao8 = new JButton("8");
JButton botao9 = new JButton("9");
JButton botao0 = new JButton("0");
JButton botaoMais = new JButton("+");
JButton botaoMenos = new JButton("-");
JButton botaoPonto = new JButton(".");
JButton botaoMult = new JButton("*");
JButton botaoDiv = new JButton("/");
JButton botaoC = new JButton("C");
JButton botaoM = new JButton("M+");
JButton botaoMC = new JButton("MC");
JButton botaoMR = new JButton("MR");
JButton botaoIgual = new JButton("=");
JButton botaoPorCento = new JButton("%");
JButton botaoRaiz = new JButton("√");
JButton botaoMaisMenos = new JButton("+/-");
public Calc() {
getContentPane().setLayout(layout);
// Configura as proridades de cada item
// Campo de Texto
grid.gridy = 0; // primeira linha
grid.gridx = 0; // primeira coluna
grid.gridwidth = 5; // ocupa 5 colunas
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 300;
layout.setConstraints(field, grid);
getContentPane().add(field);
// Botão C
grid.gridy = 1; // segunda linha
grid.gridx = 0; // primeira coluna
grid.gridwidth = 2; // ocupa 2 colunas
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 80;
layout.setConstraints(botaoC, grid);
getContentPane().add(botaoC);
// Botão M+
grid.gridy = 1; // segunda linha
grid.gridx = 2; // terceira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 10;
layout.setConstraints(botaoM, grid);
getContentPane().add(botaoM);
// Botão MR
grid.gridy = 1; // segunda linha
grid.gridx = 3; // quarta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 9;
layout.setConstraints(botaoMR, grid);
getContentPane().add(botaoMR);
// Botão MC
grid.gridy = 1; // segunda linha
grid.gridx = 4; // quinta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 9;
layout.setConstraints(botaoMC, grid);
getContentPane().add(botaoMC);
// Botão 7
grid.gridy = 2; // terceira linha
grid.gridx = 0; // primeira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao7, grid);
getContentPane().add(botao7);
// Botão 8
grid.gridy = 2; // terceira linha
grid.gridx = 1; // segunda coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao8, grid);
getContentPane().add(botao8);
// Botão 9
grid.gridy = 2; // terceira linha
grid.gridx = 2; // terceira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao9, grid);
getContentPane().add(botao9);
// Botão /
grid.gridy = 2; // terceira linha
grid.gridx = 3; // quarta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 24;
layout.setConstraints(botaoDiv, grid);
getContentPane().add(botaoDiv);
// Botão Raiz
grid.gridy = 2; // terceira linha
grid.gridx = 4; // quinta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 16;
layout.setConstraints(botaoRaiz, grid);
getContentPane().add(botaoRaiz);
// Botão 4
grid.gridy = 3; // quarta linha
grid.gridx = 0; // primeira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao4, grid);
getContentPane().add(botao4);
// Botão 5
grid.gridy = 3; // quarta linha
grid.gridx = 1; // segunda coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao5, grid);
getContentPane().add(botao5);
// Botão 6
grid.gridy = 3; // quarta linha
grid.gridx = 2; // terceira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao6, grid);
getContentPane().add(botao6);
// Botão *
grid.gridy = 3; // quarta linha
grid.gridx = 3; // quarta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 22;
layout.setConstraints(botaoMult, grid);
getContentPane().add(botaoMult);
// Botão %
grid.gridy = 3; // quarta linha
grid.gridx = 4; // quinta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 18;
layout.setConstraints(botaoPorCento, grid);
getContentPane().add(botaoPorCento);
// Botão 1
grid.gridy = 4; // quinta linha
grid.gridx = 0; // primeira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao1, grid);
getContentPane().add(botao1);
// Botão 2
grid.gridy = 4; // quinta linha
grid.gridx = 1; // segunda coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao2, grid);
getContentPane().add(botao2);
// Botão 3
grid.gridy = 4; // quinta linha
grid.gridx = 2; // terceira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao3, grid);
getContentPane().add(botao3);
// Botão -
grid.gridy = 4; // quinta linha
grid.gridx = 3; // quarta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 23;
layout.setConstraints(botaoMenos, grid);
getContentPane().add(botaoMenos);
// Botão =
grid.gridy = 4; // quinta linha
grid.gridx = 4; // quinta coluna
grid.gridheight = 2; // ocupa 2 linhas
grid.ipady = 46;
grid.ipadx = 20;
layout.setConstraints(botaoIgual, grid);
getContentPane().add(botaoIgual);
// Botão 0
grid.gridy = 5; // sexta linha
grid.gridx = 0; // primeira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botao0, grid);
getContentPane().add(botao0);
// Botão +/-
grid.gridy = 5; // sexta linha
grid.gridx = 1; // segunda coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 13;
layout.setConstraints(botaoMaisMenos, grid);
getContentPane().add(botaoMaisMenos);
// Botão .
grid.gridy = 5; // sexta linha
grid.gridx = 2; // terceira coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 24;
layout.setConstraints(botaoPonto, grid);
getContentPane().add(botaoPonto);
// Botão +
grid.gridy = 5; // sexta linha
grid.gridx = 3; // quarta coluna
grid.gridwidth = 1; // ocupa 1 coluna
grid.gridheight = 1; // ocupa 1 linha
grid.ipady = 10;
grid.ipadx = 20;
layout.setConstraints(botaoMais, grid);
getContentPane().add(botaoMais);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pack();
setVisible(true);
}
public static void main(String[] args) {
new Calc();
}
}

