次のBorder
凡例が適用されるスクリーンショットを添付しました。
黄色=JPanel
ありBorderLayout
青=JPanel
とGridBagLayout
フクシア= JPanel
withFlowLayout
言及する必要のある色でブロックされていない2つのパネルがあります。
1)「プライマリ」という単語が表示されているタイトルパネル。このパネルはBorderLayout.NORTH
「黄色」パネルにあります。
2)デバイスの画像が配置されている画像パネル。このパネルは「フクシア」の兄弟です
「Blue」はBorderLayout.CENTER
「Yellow」にあり、「Fuchsia」と画像パネルには次の制約があります。
GridBagConstraints c = new GridBagConstraints();
c.weightx = 1.0;
c.weighty = 1.0;
c.gridx = 0;
c.gridy = 0;
c.anchor = GridBagConstraints.NORTHWEST;
c.insets = new Insets(0, 10, 0, 0);
c.fill = GridBagConstraints.BOTH;
//"Blue".add(imagePanel, c);
c.weighty = 0.80;
c.gridy = 1;
c.fill = GridBagConstraints.HORIZONTAL;
//"Blue".add("Fuchsia", c);
画像からもわかるように、「フクシア」の真下にある「ブルー」の「無駄な」スペースを取り除こうとしています。でできないようですがGridBagConstraints
、間違って使っているだけLayoutManager
ですか?私には「ブルー」のように見えます。彼は、上向きに収縮するのではなく、各子供に利用可能なスペースの半分を与え、残りのスペースを予約してCENTER
いるだけです。ここで何が欠けていますか?これは単に「フクシア」に優先サイズまたは最大サイズを設定することの問題ですか?「フクシア」(私の色分けで覆われている)の周りの境界線は、コンポーネントの終わりを配置したい場所であるため、それでは私が望む場所に到達できないようです。BorderLayout
JPanel