2011-07-31 18 views
0

JPanel内にJPanelを作成しました。その幅と高さの属性を特定の数値に設定したいと思います。ここに私がこれまで持っているものがあります。JPanelのJava設定サイズ

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は私のためには機能しませんでした。

ありがとうございました。

答えて

3

ほとんどのレイアウトマネージャは、サイズよりも優先サイズを重視しています。そのため、JPanelでsetPreferredSize(...)を試してみてください。しかし、あなたが何をしていても、BorderLayout.NORTHを追加すると、JPanelを含む北の位置全体を塗りつぶします。 searchPanelを別のJPanel(BoxLayoutを使用するJPanel)にネストし、そのJPanel BorderLayout.NORTHを追加することもできます。

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