質問: new JLabel(ii); img.setSize(kakudai1, kakudai2); jpo.add(img); } }
回答: > > 表示スペースを大きく > > > とのことですが、そもそもご質問のコードではレイアウト制約(サイズに関する制約)を指定してませんのでswingのランタイムが「画面を構成する各々の部品をどういう大きさでレイアウトするかを適当にやってしまう」ことになります。 画面を構成するいくつかの部品に対して setPreferedSize, setMinimumSize, setMaximumSize などを使って「どういう大きさを期待しているのか」を指定するようにしてください。 なおsetBounds/setSizeなど「絶対的な大きさを明示的に指定する」方法は使わずにあくまで「望むサイズ制約を指定する」のが常道です。もし位置や大きさを全部自分で指定したいならJLabelやJPanelの階層を構築するのではなく、一枚だけJPanelを用意してpaintComponentメソッドをオーバーライドし、その中でGraphicsを通じて好きな位置へ好きな大きさで直接描画したほうが意図した結果を得られやすいかも知れません。 しかしそうやってしまうと座標計算を全部一々自分でやらねばなりません。そういうレイアウトの煩わしさを軽減するためにJPanelと様々なLayoutManagerクラス(GridLayoutやBorderLayoutなど)が存在するのですが、それらを用いてレイアウトする場合は前述したように「適切なレイアウト制約を設定して初めて期待通りの配置・大きさになる」と考えてください。