3

私はとを持ってJFrameGridBagLayoutます。weightx値とweighty値には、異なるゼロ以外の値が割り当てられ、GridBagConstraints.fill=GridBagConstraints.BOTHが割り当てられます。セルの1つにJPanelをネストし、GridBagLayoutも指定しました。ネストされたJPanelにコンポーネントを追加すると、ネストされたJPanelが存在するセルのサイズが四方に大きくなり、親のレイアウトが失われます。インセットとパディングは使用されません。
この問題を解決するにはどうすればよいですか?これは、GridBagConstraints値の例です。

GridBagConstraints treePanCon = new GridBagConstraints();
treePan.setLayout(treePanGridbag);
treePanCon.fill = GridBagConstraints.BOTH;
treePanCon.weightx = 0.5;
treePanCon.weighty = 1;
treePanCon.gridx = 0;
treePanCon.gridy = 0;
treePanCon.gridwidth = 1;
treePanCon.gridheight = 1;

これは、ネストされたJPanelにコンポーネントを追加する前のスクリーンショットです。
ここに画像の説明を入力してください

ネストされたJPanelにコンポーネントを追加した後のスクリーンショット:
ここに画像の説明を入力してください

4

2 に答える 2

4

それがまさに起こるはずのことです。あなたが探している行動を説明してください。余談ですが、J2SEで利用できるレイアウトマネージャーは理想的とは言えません。過去の人生で大量のSwing作業を行ったことがあるので、JGoodiesフォームをチェックすることを強くお勧めします:http ://www.jgoodies.com/freeware/forms/ 。ホワイトペーパーを確認してください。GridBagよりも使いやすく、はるかに直感的です。

于 2011-08-29T23:54:09.810 に答える
2

これはおそらくこの遅い日付ではまったく役に立たないでしょうが...

2つの新しいボタンをレイアウトするときに、おそらく両方を使用したようです。

ツリーのpreferredSize.widthが内部パネルに
必要な幅であり、2つの新しいボタンをそれぞれツリーの幅の半分にする場合は、

それらのpreferredSize.widthをツリーのpreferredSize.widthの半分に設定
し、2つのボタンでNONEを使用します。

内側のパネルのツリーでVERTICALを使用します。アウターパネルのインナーパネルにVERTICALを使用します。

于 2012-03-16T15:49:45.470 に答える