回答編集履歴

6

原因部分を訂正

2017/05/11 20:00

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -320,17 +320,7 @@
320
320
 
321
321
  ---
322
322
 
323
- いろいろな原因が積み重なって表示されていなかったのですが、個人的に主原因と思うのはMainFrameクラスのこの部分です。
324
-
325
- ```Java
326
-
327
- Container contentPane = getContentPane();
328
-
329
- contentPane.add(jps[i], BorderLayout.CENTER);
330
-
331
- ```
332
-
333
- FirstPanel しかContentPaneに登録してません、そしてMainFrame#changeKeyメソッドでFirstPanelをsetVisible(false);にすると親のcontentPaneが表示されて遷移したように見えるだけなのです。
323
+ MainFrame#changeKeyメソッドでFirstPanelをsetVisible(false);にすると親のcontentPaneが表示されて遷移したように見えるだけなのです。
334
324
 
335
325
 
336
326
 

5

setBounds の引数y 4050=> 450

2017/05/11 20:00

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -206,7 +206,9 @@
206
206
 
207
207
  JButton buttonThree = new JButton("Three");
208
208
 
209
+ // setBounds の引数y 4050=> 450
210
+
209
- buttonThree.setBounds(256, 4050, 512, 50);
211
+ buttonThree.setBounds(256, 450, 512, 50);
210
212
 
211
213
  buttonThree.addActionListener(this);
212
214
 

4

frame\.changePanel\("Second"\);の呼び出しを追加

2017/05/11 19:54

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -278,20 +278,20 @@
278
278
 
279
279
  case "Two":
280
280
 
281
+ frame.changePanel("Second");
282
+
283
+ break;
284
+
285
+ case "Three":
286
+
287
+ break;
288
+
289
+ case "Four":
290
+
281
291
  frame.changePanel("Third");
282
292
 
283
293
  break;
284
294
 
285
- case "Three":
286
-
287
- break;
288
-
289
- case "Four":
290
-
291
- frame.changePanel("Third");
292
-
293
- break;
294
-
295
295
  case "Five":
296
296
 
297
297
  System.exit(0);

3

changeKeyの不要な引数を削除。メソッド名をchangePanelに

2017/05/11 17:04

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -112,7 +112,9 @@
112
112
 
113
113
 
114
114
 
115
+ // changeKey=>changePanelにメソッド名を変更して、引数を1個に
116
+
115
- public void changeKey(JPanel panel, String str) {
117
+ public void changePanel(String str) {
116
118
 
117
119
  int index = Arrays.asList(PanelNames).indexOf(str);
118
120
 
@@ -120,8 +122,6 @@
120
122
 
121
123
  }
122
124
 
123
-
124
-
125
125
  }
126
126
 
127
127
  ```
@@ -270,15 +270,15 @@
270
270
 
271
271
  case "One":
272
272
 
273
- //MainFrame#changeKeyを呼び出
273
+ //MainFrame#changePanelを呼び出
274
-
274
+
275
- frame.changeKey(this, "First");
275
+ frame.changePanel("First");
276
276
 
277
277
  break;
278
278
 
279
279
  case "Two":
280
280
 
281
- frame.changeKey(this, "Second");
281
+ frame.changePanel("Third");
282
282
 
283
283
  break;
284
284
 
@@ -288,7 +288,7 @@
288
288
 
289
289
  case "Four":
290
290
 
291
- frame.changeKey(this, "Third");
291
+ frame.changePanel("Third");
292
292
 
293
293
  break;
294
294
 

2

画面の管理方法について追記

2017/05/11 17:01

投稿

umyu
umyu

スコア5846

test CHANGED
File without changes

1

画面の管理方法について追記

2017/05/11 15:44

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -335,3 +335,17 @@
335
335
  Swingのコンポーネントのデバックをする時は、
336
336
 
337
337
  JFrameをクリックしてフォーカスを当てた状態で**CTRL+Shit+F1**キーを押下すると、コンソールにSwingのコンポーネントツリーが出力されます。
338
+
339
+
340
+
341
+ ---
342
+
343
+ 画面遷移の管理について
344
+
345
+ 0. 遷移を管理するためのシーンクラスを作成(シングルトン)
346
+
347
+ 0. 画面の遷移元と遷移先をツリー構造で管理する。
348
+
349
+
350
+
351
+ JFrameを継承したクラスにいろいろな処理を書くのは個人的に好きではないのでこれがベターだと思います。