時間が経過してしまってますが・・・
MasashiKimuraさんが提示しておられるCardLayoutで画面遷移が可能と思いますが、回答コメントを拝見すると、質問者さんはCardLayoutの使い方(CardLayoutをどう初期化して、ボタンを押下した際のイベントハンドラーでどうやって遷移させるのか)を勘違いしておられるように感じました。
###CardLayoutをnewするのはいつ?
質問者さんはイベントハンドラーの中でnewしておられます。しかしそのタイミングでnewするのではなく、本来は画面を生成する初期化コードでCardLayoutをnewし、メインとなるJPanelのレイアウトマネージャーとして設定し、さらに複数の子供パネルをも同時に作成してしまい、メインのJPanelの配下へ配置してしまうのが典型的な使い方だと思います。
###ではJButtonのイベントハンドラーでは何をすべきか?
CardLayoutに対してfirst, last, next, previousなどのメソッドを呼び出すことのみをすればよいです。
例えば画面1, 画面2の2つの画面を切り替えたい場合、Component構成は次のようになります。このような階層はアプリケーションの最初に生成し、ボタンのイベントハンドラーの中ではCardLayoutを持つJPanelの子供画面の「どれを表示すべきか」を前述の4種類のメソッドのどれかを用いて指示することになります。
JFrame
+ contantPane : JPanel(with CardLayout)
+ JPanel (画面1)
+ JPanel (画面2)
+ ...
このようにCardLayoutとは「遷移する可能性のある全ての画面を最初から生成する」というところがポイントです。
蛇足:
もし切り替えようとする画面の数が多いとかそれぞれの画面が複雑であるなどの理由で、「切り替えようとするタイミングで画面を生成したい」という場合はCardLayoutは不向きということになってしまいます。その場合はボタンのイベントハンドラーの中で切り替える先の画面を動的に生成し、画面を構成するコンポーネント階層を動的に変更する必要があります。例えばMainPanelの下にPanel1を表示中にPanel1->Panel2へ遷移させるならMainPanelからPanel1をremoveしてPanel2をaddするといった具合です。(あるいはJFrameに表示する画面全体を切り替えるならJFrameのcontentPaneを再設定すればよいでしょう)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。