これを実現するために GridBagLayout レイアウト マネージャーを使用しようとしています。
しかし、私が現在得ているのはこれです:
問題は、オレンジ色と茶色/灰色のパネルが 2 番目の列を占有するはずですが、コードの実行に関しては 3 番目の列のみを占有したいように見えることです。
レイアウトに使用しているコード:
Container contentPane = form.getContentPane();
contentPane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JPanel pnlGame = new JPanel();
pnlGame.setBackground(Color.green); //temp
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 2;
c.gridheight = 2;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.85;
c.weighty = 0.65;
contentPane.add(pnlGame, c);
JPanel pnlBuy = new JPanel();
c.gridx = 2;
pnlBuy.setBackground(Color.blue); //temp
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.15;
c.weighty = 0.46;
contentPane.add(pnlBuy, c);
JPanel pnlUpgrade = new JPanel();
pnlUpgrade.setBackground(Color.yellow); //temp
c.gridx = 2;
c.gridy = 1;
c.gridwidth = 1;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.15;
c.weighty = 0.19;
contentPane.add(pnlUpgrade, c);
JPanel pnlStats = new JPanel();
pnlStats.setBackground(Color.red); //temp
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 1;
c.gridheight = 2;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.61;
c.weighty = 0.35;
contentPane.add(pnlStats, c);
JPanel pnlSpeed = new JPanel();
pnlSpeed.setBackground(Color.orange); //temp
c.gridx = 1;
c.gridy = 2;
c.gridwidth = 2;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.38;
c.weighty = 0.04;
contentPane.add(pnlSpeed, c);
JPanel pnlRounds = new JPanel();
pnlRounds.setBackground(Color.gray); //temp
c.gridx = 2;
c.gridy = 3;
c.gridwidth = 2;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.38;
c.weighty = 0.31;
contentPane.add(pnlRounds, c);
それで、私は何を間違っていますか?私の英語が少し下手だったらすみません、そして/または私が犯している間違いが目に見えないほど明らかでしたら...それは朝の20時から5時です、そして私は長い一日を過ごしました. おそらく干し草を打つはずです、かなりすぐに。
アップデート:
茶色/灰色のパネルのグリッド幅を変更すると、すべてが適切に整列しているように見えますが、レイアウトに厄介なギャップが生じます。ここ:
i.imgur.com/6JUx2.png
パネルのコード (Kevin S によって提案された修正を含む):
JPanel pnlRounds = new JPanel();
pnlRounds.setBackground(Color.gray); //temp
c.gridx = 1;
c.gridy = 3;
c.gridwidth = 1;
c.gridheight = 1;
c.fill = GridBagConstraints.BOTH;
c.weightx = 0.38;
c.weighty = 0.31;
contentPane.add(pnlRounds, c);
それで、私が間違っていることはありますか、それともこれは、私が一緒に暮らす必要のある GridBagLayout の奇妙な動作ですか?
残念ながら、私の編集のおかげで、Bala R が親切にそこに入れてくれたすべての埋め込みが失われました。というわけで、画像のリンクに戻ってしまいました。そして今、私は 2 つ以上のハイパーリンクを投稿できないようです.リンクは最後のもので殺されました.コピーして貼り付ける必要があります.
ありがとう、サム