回答編集履歴
6
原因部分を訂正
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
|
-
|
323
|
+
MainFrame#changeKeyメソッドでFirstPanelをsetVisible(false);にすると親のcontentPaneが表示されて遷移したように見えるだけなのです。
|
334
324
|
|
335
325
|
|
336
326
|
|
5
setBounds の引数y 4050=> 450
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, 4
|
211
|
+
buttonThree.setBounds(256, 450, 512, 50);
|
210
212
|
|
211
213
|
buttonThree.addActionListener(this);
|
212
214
|
|
4
frame\.changePanel\("Second"\);の呼び出しを追加
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に
test
CHANGED
@@ -112,7 +112,9 @@
|
|
112
112
|
|
113
113
|
|
114
114
|
|
115
|
+
// changeKey=>changePanelにメソッド名を変更して、引数を1個に
|
116
|
+
|
115
|
-
public void change
|
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#change
|
273
|
+
//MainFrame#changePanelを呼び出す。
|
274
|
-
|
274
|
+
|
275
|
-
frame.change
|
275
|
+
frame.changePanel("First");
|
276
276
|
|
277
277
|
break;
|
278
278
|
|
279
279
|
case "Two":
|
280
280
|
|
281
|
-
frame.change
|
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.change
|
291
|
+
frame.changePanel("Third");
|
292
292
|
|
293
293
|
break;
|
294
294
|
|
2
画面の管理方法について追記
test
CHANGED
File without changes
|
1
画面の管理方法について追記
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を継承したクラスにいろいろな処理を書くのは個人的に好きではないのでこれがベターだと思います。
|