実装の一例です。
フレームを集中管理するクラスを作って、それを経由してフレームの表示をコントロールします。
Frame2
,Frame3
のボタンは省略しています。ほかにも細かいところは省いています。
まとめて書く都合上、publicでないクラスがありますが、適宜変更してください。
lang
1// Java7以降対応
2
3import java.awt.FlowLayout;
4import java.awt.event.ActionEvent;
5import javax.swing.AbstractAction;
6import javax.swing.JButton;
7import javax.swing.JFrame;
8import javax.swing.SwingUtilities;
9
10public final class App {
11
12 public static void main(String[] args) {
13 SwingUtilities.invokeLater(new Runnable() {
14 public void run() {
15 FrameController.start();
16 }
17 });
18 }
19
20}
21
22final class FrameController {
23
24 private Frame1 frame1;
25 private Frame2 frame2;
26 private Frame3 frame3;
27
28 public FrameController() {
29 this.frame1 = new Frame1(this);
30 this.frame2 = new Frame2(this);
31 this.frame3 = new Frame3(this);
32 }
33
34 public static void start() {
35 FrameController controller = new FrameController();
36 controller.showFrame1();
37 }
38
39 public static void showFrame(JFrame frame) {
40 frame.setVisible(true);
41 frame.requestFocus();
42 }
43
44 public void showFrame1() {
45 showFrame(frame1);
46 }
47
48 public void showFrame2() {
49 showFrame(frame2);
50 }
51
52 public void showFrame3() {
53 showFrame(frame3);
54 }
55
56}
57
58final class Frame1 extends JFrame {
59
60 public Frame1(final FrameController frameController) {
61 setLayout(new FlowLayout());
62 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
63 add(new JButton(new AbstractAction("続きから") {
64 @Override
65 public void actionPerformed(ActionEvent e) {
66 frameController.showFrame2();
67 }
68 }));
69 add(new JButton(new AbstractAction("始めから") {
70 @Override
71 public void actionPerformed(ActionEvent e) {
72 frameController.showFrame3();
73 }
74 }));
75 pack();
76 }
77
78}
79
80final class Frame2 extends JFrame {
81
82 public Frame2(FrameController frameController) {
83 setTitle("コンティニュー");
84 setSize(300, 200);
85 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
86 }
87
88}
89
90final class Frame3 extends JFrame {
91
92 public Frame3(FrameController frameController) {
93 setTitle("ニューゲーム");
94 setSize(300, 200);
95 setDefaultCloseOperation(DISPOSE_ON_CLOSE);
96 }
97
98}