回答編集履歴
6
原因部分を訂正
answer
CHANGED
@@ -159,12 +159,7 @@
|
|
159
159
|
}
|
160
160
|
```
|
161
161
|
---
|
162
|
-
いろいろな原因が積み重なって表示されていなかったのですが、個人的に主原因と思うのはMainFrameクラスのこの部分です。
|
163
|
-
```Java
|
164
|
-
Container contentPane = getContentPane();
|
165
|
-
contentPane.add(jps[i], BorderLayout.CENTER);
|
166
|
-
```
|
167
|
-
|
162
|
+
MainFrame#changeKeyメソッドでFirstPanelをsetVisible(false);にすると親のcontentPaneが表示されて遷移したように見えるだけなのです。
|
168
163
|
|
169
164
|
Swingのコンポーネントのデバックをする時は、
|
170
165
|
JFrameをクリックしてフォーカスを当てた状態で**CTRL+Shit+F1**キーを押下すると、コンソールにSwingのコンポーネントツリーが出力されます。
|
5
setBounds の引数y 4050=> 450
answer
CHANGED
@@ -102,7 +102,8 @@
|
|
102
102
|
buttonTwo.setActionCommand("Two");
|
103
103
|
|
104
104
|
JButton buttonThree = new JButton("Three");
|
105
|
+
// setBounds の引数y 4050=> 450
|
105
|
-
buttonThree.setBounds(256,
|
106
|
+
buttonThree.setBounds(256, 450, 512, 50);
|
106
107
|
buttonThree.addActionListener(this);
|
107
108
|
buttonThree.setActionCommand("Three");
|
108
109
|
|
4
frame\.changePanel\("Second"\);の呼び出しを追加
answer
CHANGED
@@ -138,7 +138,7 @@
|
|
138
138
|
frame.changePanel("First");
|
139
139
|
break;
|
140
140
|
case "Two":
|
141
|
-
frame.changePanel("
|
141
|
+
frame.changePanel("Second");
|
142
142
|
break;
|
143
143
|
case "Three":
|
144
144
|
break;
|
3
changeKeyの不要な引数を削除。メソッド名をchangePanelに
answer
CHANGED
@@ -55,11 +55,11 @@
|
|
55
55
|
}
|
56
56
|
}
|
57
57
|
|
58
|
+
// changeKey=>changePanelにメソッド名を変更して、引数を1個に
|
58
|
-
public void
|
59
|
+
public void changePanel(String str) {
|
59
60
|
int index = Arrays.asList(PanelNames).indexOf(str);
|
60
61
|
layout.show(jps[index].getParent(), jps[index].getName());
|
61
62
|
}
|
62
|
-
|
63
63
|
}
|
64
64
|
```
|
65
65
|
FirstPanelクラス
|
@@ -134,16 +134,16 @@
|
|
134
134
|
switch(cmd){
|
135
135
|
|
136
136
|
case "One":
|
137
|
-
//MainFrame#
|
137
|
+
//MainFrame#changePanelを呼び出す。
|
138
|
-
frame.
|
138
|
+
frame.changePanel("First");
|
139
139
|
break;
|
140
140
|
case "Two":
|
141
|
-
frame.
|
141
|
+
frame.changePanel("Third");
|
142
142
|
break;
|
143
143
|
case "Three":
|
144
144
|
break;
|
145
145
|
case "Four":
|
146
|
-
frame.
|
146
|
+
frame.changePanel("Third");
|
147
147
|
break;
|
148
148
|
case "Five":
|
149
149
|
System.exit(0);
|
2
画面の管理方法について追記
answer
CHANGED
File without changes
|
1
画面の管理方法について追記
answer
CHANGED
@@ -166,4 +166,11 @@
|
|
166
166
|
FirstPanel しかContentPaneに登録してません、そしてMainFrame#changeKeyメソッドでFirstPanelをsetVisible(false);にすると親のcontentPaneが表示されて遷移したように見えるだけなのです。
|
167
167
|
|
168
168
|
Swingのコンポーネントのデバックをする時は、
|
169
|
-
JFrameをクリックしてフォーカスを当てた状態で**CTRL+Shit+F1**キーを押下すると、コンソールにSwingのコンポーネントツリーが出力されます。
|
169
|
+
JFrameをクリックしてフォーカスを当てた状態で**CTRL+Shit+F1**キーを押下すると、コンソールにSwingのコンポーネントツリーが出力されます。
|
170
|
+
|
171
|
+
---
|
172
|
+
画面遷移の管理について
|
173
|
+
0. 遷移を管理するためのシーンクラスを作成(シングルトン)
|
174
|
+
0. 画面の遷移元と遷移先をツリー構造で管理する。
|
175
|
+
|
176
|
+
JFrameを継承したクラスにいろいろな処理を書くのは個人的に好きではないのでこれがベターだと思います。
|