0

JPanel 内に JPanel を作成しました。幅と高さの属性を特定の数値に設定したいと考えています。これが私がこれまでに持っているものです。

  searchPanel.setLayout(new GridBagLayout());
     GridBagConstraints c = new GridBagConstraints();
     searchPanel.setBorder(BorderFactory.createCompoundBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED), new EmptyBorder(12, 12, 12, 12)));

     c.insets = new Insets(2, 2, 2, 2);
     c.fill = GridBagConstraints.HORIZONTAL;

     c.weightx = 1;
     c.weighty = 1;
     c.gridx = 0;
     c.gridy = 0;
     searchPanel.add(typeLabel, c);

     c.weightx = .8;
     c.weighty = 1;
     c.gridx = 0;
     c.gridy = 1;
     searchPanel.add(typeComboBox, c); 
    ....

     yearComboBox.setModel(this.yearDefaultCombo);
     typeComboBox.setModel(this.typeDefaultCombo);

     updateYearComboBox();

     this.setLayout(new BorderLayout(10, 10));
     this.setBorder(new EmptyBorder(10, 10, 10, 10));

     searchPanel.setSize(200, 100);
     this.add(searchPanel, BorderLayout.NORTH);

コードでは、「this」は親 JPanel を参照します。現在、内側の「searchPanel」は、BorderLayout.NORTH 制約により、画面の上部セクション全体に沿って引き伸ばされていますが、左上隅の小さなパネルとしてのみ必要ですが、setSize は機能しませんでした。

ありがとう。

4

1 に答える 1

3

ほとんどのレイアウトマネージャーはサイズよりも優先サイズを尊重するため、JPanelでsetPreferredSize(...)を試してみてください。ただし、何をしても、BorderLayout.NORTHを追加すると、含まれているJPanelの北の位置全体を埋めるように伸びます。searchPanelを別のJPanel(おそらく、BoxLayoutを使用するもの)にネストし、そのJPanelBorderLayout.NORTHを追加することをお勧めします。

このほとんどがそこで説明されているので、レイアウトチュートリアルとそのAPIを読んでください。

于 2011-07-31T22:48:53.653 に答える