Ajuda com a intercalação de programas

Galera, fiz 2 programas em arquivos diferentes.
O “MenuComFrame” é um teste que eu tava fazendo com o JMenu que o unico botão que funciona é o item “Desenho livre”.
O “DesenhoLivre” um JFrame que desenha de acordo com a posição do mouse.
Queria integrar esse “DesenhoLivre” no resto do frame que sobrou do “MenuComFrame”, porém n tenho conhecimento de como fazer isso, já tentei de diversas formas e não consigo.

MenuComFrame

import javax.swing.;
import java.awt.
;
import java.awt.event.*;

public class MenuComFrame extends JFrame{
//Instancia a barra de menu e os itens
JMenuBar barra = new JMenuBar();
JFrame areadesenho = new JFrame();

JMenu menuArquivo = new JMenu(“Arquivo”);
JMenuItem novo = new JMenuItem(“Novo”);
JMenuItem abrir = new JMenuItem(“Abrir”);
JMenuItem fechar = new JMenuItem(“Fechar”);

JMenu menuFerramentas = new JMenu(“Ferramentas”);
JMenuItem linha = new JMenuItem(“Linha reta”);
JMenuItem quadrado = new JMenuItem(“Quadrado”);
JMenuItem triangulo = new JMenuItem(“Triângulo Retângulo”);
JMenuItem livre = new JMenuItem(“Desenho Livre”);
JMenuItem freeman = new JMenuItem(“Desenhar por Freeman Chain”);

JMenu menuSobre = new JMenu(“Sobre”);

JMenu menuSair = new JMenu(“Sair”);
JMenuItem exit = new JMenuItem(“Exit”);

public MenuComFrame(){
//coloca a barra de menu e os itens
setJMenuBar(barra);
areadesenho.setTitle("");
areadesenho.setSize(500,500);
areadesenho.setVisible(false);
areadesenho.setLocationRelativeTo(null);

  barra.add(menuArquivo);
     menuArquivo.add(novo);
     menuArquivo.add(abrir);      
     menuArquivo.add(fechar);
        
  barra.add(menuFerramentas);
     menuFerramentas.add(linha);
     menuFerramentas.add(quadrado);
     menuFerramentas.add(triangulo);
     menuFerramentas.add(livre);
     menuFerramentas.add(freeman);
  
  barra.add(menuSobre);
     //menuSobre.add();            

  barra.add(menuSair);
     menuSair.add(exit);
  
  
  //dando ação aos itens
  fechar.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e){
        setVisible(false);
        new MenuInicial();
     }
  });
            
  exit.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e){
        System.exit(0);
     }
  });

  livre.addActionListener(new ActionListener(){
     public void actionPerformed(ActionEvent e){
        new DesenhoLivre();         
     }
  });      
        
  setTitle("MiniCad");
  setExtendedState(MAXIMIZED_BOTH);
  setLocationRelativeTo(null);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setVisible(true);

}

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

==========================================================================
DesenhoLivre

import javax.swing.JFrame;

import java.util.ArrayList;
import java.awt.Point;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class DesenhoLivre extends JFrame{

boolean pressionado = false;

public DesenhoLivre(){
//“escuta” o que o mouse faz enquanto executa o programa em sí
addMouseListener(new MouseListener(){
public void mouseReleased(MouseEvent e){
pressionado = false;
}
public void mousePressed(MouseEvent e){
pressionado = true;
listadecoord.clear();
}
public void mouseExited(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
}
});
//instancia o objeto time
new Time().start();
//seta a configuração inicial do frame
setExtendedState(MAXIMIZED_BOTH);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
//Lista de coordenadas gravadas para execução do desenho livre
ArrayList listadecoord = new ArrayList<>();

public class Desenho{
int x, y;
public Desenho(int x, int y){
this.y = y;
this.x = x;
}
}
//desenha uma linha da coordenada x,y para a coordenada x2,y2
public void paint(Graphics g){
for(int i=1; i<listadecoord.size();i++){
int x = listadecoord.get(i).x;
int y = listadecoord.get(i).y;
int x2 = listadecoord.get(i-1).x;
int y2 = listadecoord.get(i-1).y;
g.drawLine(x2,y2,x,y);

  }

}
//principal ======================================
public static void main(String[]args)
{
new DesenhoLivre();
}