Duvida Grafico em java

Galera estou tentando fazer um programa de operações básicas de matemáticas, estou utilizando o JOptionPane, só que eu queria fixar ele no JFrame, tipo ao clicar em subtração ele aparecer na tela, sem ser separado, segue o código:

A classe calculo esta aqui, isso é o main

package calculos;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author Pedro
 */
public class button extends JFrame implements ActionListener {

    public button() {
        setTitle("Operações Matematicas");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
        setSize(800, 600);
        botoes();
    }

    public void botoes() {

        JButton b = new JButton("Clique Para Subtração");
        b.addActionListener(this);
        add(b);

    }

    public static void main(String[] args) {
        button app = new button();
        app.setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Calculos c1 = new Calculos();
        double v1, v2;
        v1 = Double.parseDouble(JOptionPane.showInputDialog("Digite o primeiro valor para a Subtração: "));
        v2 = Double.parseDouble(JOptionPane.showInputDialog("Digite o segundo valor :"));
        c1.Subtracao(v1, v2);
        JOptionPane.showMessageDialog(null, "O resultado da Subtração é: " + c1.getSubtracao());
        
    }

}

Crie um método no JFrame que faça o get do seu JButton.

 JButton botao = new button(); // Deixe classes de letra maiuscula cara, usei nesse exemplo sua classe
 getContentPane().add( botao, BorderLayout.SOUTH );