回答編集履歴

2

追記

2017/07/28 03:03

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,4 +1,4 @@
1
- なんというか、いろいろと不可解なコードです。
1
+ なんというか、いろいろと不可解なコードです。**(修正確認しました)**
2
2
 
3
3
  - **命名がおかしい**
4
4
 
@@ -78,6 +78,22 @@
78
78
 
79
79
 
80
80
 
81
+ ---
82
+
83
+ 設計的に改善するとしたら、次のどっちかですかね。
84
+
85
+ - MainクラスからImagePanelを呼び出し、ImagePanelからStartPanelを呼び出す。
86
+
87
+ - Mainクラスから両方を呼び出し、ImagePanelに子としてStartScreenを与える。
88
+
89
+
90
+
91
+ 後者の方が柔軟な気もします。どんな機能を組み込むかにもよりますが。
92
+
93
+ ともかく、インタフェースを意識して作る必要はあるでしょう。
94
+
95
+
96
+
81
97
  不明な点がありましたらコメントにてお知らせ下さい。
82
98
 
83
99
  コードを見せちゃった方が早いんですが、質問者様のデバッグの機会を奪いたくないので。

1

追記

2017/07/28 03:03

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -25,3 +25,59 @@
25
25
  もっと簡潔に書けるはずです。
26
26
 
27
27
  重複して書いているからフレームも二つ出て、処理の順序が前後しているからまっしろです。
28
+
29
+
30
+
31
+ 追記
32
+
33
+ ---
34
+
35
+ デバッグしてみましたが、それなりの量書き換える必要がありました。
36
+
37
+ 要点は次のとおりです。
38
+
39
+ - **pack()とsetVisible(true)の呼ばれるタイミングを適切にする**
40
+
41
+ これらのメソッドはその性格上、コンポーネントの配置がすべて終わった時に呼ばれるべきです。
42
+
43
+ - **SmartScreenがパネルとして機能していない**
44
+
45
+ フィールドのmainpaneに対して操作をしているので、SmartScreenのインスタンスjpは真っ白です。
46
+
47
+ - **パネルの親子関係に意識を向ける**
48
+
49
+ 下記のコードを見る限り、mainpaneはbackpaneの子なのですよね?
50
+
51
+ > ```Java
52
+
53
+ > backpane.add(mainpane);
54
+
55
+ > ```
56
+
57
+
58
+
59
+ メインとなるフレームから子を直接呼び出すのはおかしな設計です。
60
+
61
+ - **フレームに与えるのは親のパネル**
62
+
63
+ 直前の項と重複しますが、子をaddしてどうするんです?
64
+
65
+ > ```Java
66
+
67
+ > StartScreen jp = new StartScreen();
68
+
69
+ > main.getContentPane().add(jp);
70
+
71
+ > ```
72
+
73
+
74
+
75
+ - **必要のないsetVisibleを削る**
76
+
77
+ しっかりとGUIを組めていれば、フレームを可視化すればそれで充分です。
78
+
79
+
80
+
81
+ 不明な点がありましたらコメントにてお知らせ下さい。
82
+
83
+ コードを見せちゃった方が早いんですが、質問者様のデバッグの機会を奪いたくないので。