メイン フレームを閉じながら、stage2 という名前の新しいフレームを開こうとしています。しかし、そこに main.setVisible(false) を配置すると、囲んでいるクラスではなく、メインフレームによって呼び出された jpanel クラスにこのリスナーを配置しました。このように見えるので..
class main extends JFrame()
{
   main()
     {
     }
   add(story2)
}
class story2 extends JPanel()
{
    public void mouseClicked(MouseEvent e)
            {
                 new stage2(); 
                 main.this.setVisible(false);
            }
}