回答編集履歴

1

誤記訂正

2017/09/27 17:11

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
 
62
62
 
63
- 申し訳ないですが質問のコードとはクラス構成が異なっており、メインクラスはJFrameの派生でありメイン画面の定義処理はmainメソッドではなくMyFrameクラスのコンストラクターでやっている点が若干比較しずらいですが、自分がポイントであると思う処理の違いは(1),(2)ですのでそこに目してください。
63
+ 申し訳ないですが質問のコードとはクラス構成が異なっており、メインクラスはJFrameの派生でありメイン画面の定義処理はmainメソッドではなくMyFrameクラスのコンストラクターでやっている点が若干比較しずらいですが、自分がポイントであると思う処理の違いは(1),(2)ですのでとりあえずはそこに目してください。
64
64
 
65
65
 
66
66
 
@@ -68,7 +68,7 @@
68
68
 
69
69
  (1) コンポーネントのレイアウト(位置と大きさ)
70
70
 
71
- swing前提でのゲームのコードによく見かける気がしますが、普通のレイアウト機構を用いずに標準的とはいえない方法で(つまり自前で各々のコンポーネントのレイアウトを明示する方針で)書いしまうこ少なくとも自分にはコードを見たとき正しくレイアウトているかどうか分かりづらく感じます。標準のレイアウト機構といっているのは「レイアウト制約を宣言的に指定し、実際のリサイズや配置はレイアウトマネージャーに任せる」「初期レイアウトはJFrame#packにより行う」す。
71
+ 特にswing前提でのゲームのコード、普通のレイアウト機構を用いずに標準的とはいえない方法で(つまり自前で各々のコンポーネントのレイアウトを明示する方針で)書いたコードをよく見かける気がします。ご質問のコードもその傾向にある思います。少なくとも自分にはそのようなコードを見たとき正しくレイアウトできているかどうか分かりづらく感じます。普通のレイアウト機構とは「レイアウト制約を宣言的に指定し、実際のリサイズや配置はレイアウトマネージャーに任せる」「初期レイアウトはJFrame#packにより行う」といった点を指します。
72
72
 
73
73
 
74
74
 
@@ -76,7 +76,7 @@
76
76
 
77
77
 
78
78
 
79
- とりあえず**何もコンテントが出ないという状況は`JFrame#pack`を呼び出せば解消できます**。ただ、コンテント表示されるようになるののコンポーネントのレイアウト乱れているように見えまそれらの原因を指摘できるほどには詳細にコードをみておりませんが、コンテントがとりあえず表示される状態にはなるので、今少しご自分で調べることができると思います
79
+ とりあえず**何もコンテントが出ないという状況は`JFrame#setVisible`の直前で`JFrame#pack`を呼び出せば解消できます**。コンテント表示されるようになるので、後は個々のコンポーネントのレイアウト乱れを修正していくことで期待すレイアウトにもっていけそうです。(実際にいくつか乱れがあるようが、自分はそれらの原因を指摘できるほどには詳細にコードをみてません。
80
80
 
81
81
 
82
82
 
@@ -106,7 +106,7 @@
106
106
 
107
107
  ---
108
108
 
109
- (1),(2)共通に言えることなのですが、swingに限らず、GUIプログラミング(特にレイアウト)はそもそもの機構が複雑なので、なるべく平易な方法(作法)を知りそれに沿ったコードを書くことが大事な気がします。そうでないとコードを見ただけで「うまく動くかどうか」がすぐにはわかりづらく(※)、悪くすると動かしてみても原因がつかめないといったことになりがちと思います。何が平易な作法なのかというのは一言で言うのは難しいですが、とりあえず本件でいえば「レイアウトマネージャーにレイアウトをまかせましょう」というのが自分の意見です。
109
+ (1),(2)共通に言えることなのですが、swingに限らず、GUIプログラミング(特にレイアウト)はそもそもの機構が複雑なので、なるべく平易な方法(作法)を知りそれに沿ったコードを書くことが大事な気がします。そうでないとコードを見ても「うまく動くかどうか」がすぐにはわかりづらく(※)、悪くすると動かしてみても原因がつかめないといったことになりがちと思います。何が平易な作法なのかというのは一言で言うのは難しいですが、とりあえず本件でいえば「レイアウトマネージャーにレイアウトをまかせること」というのが自分の意見です。
110
110
 
111
111
 
112
112