2011-07-31 163 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。現在,由於BorderLayout.NORTH約束,我的內部「searchPanel」沿屏幕的整個頂部延伸,但我只希望它作爲左上角的一個小面板,但setSize對我不起作用。

謝謝。

回答

3

大多數佈局管理器都將首選大小視爲大於大小,因此您可以在JPanel上嘗試setPreferredSize(...)。但是不管你做什麼,如果你添加BorderLayout.NORTH,它將伸展到填充包含JPanel的整個北部位置。您可能希望將您的searchPanel嵌套到另一個JPanel(可能使用BoxLayout),並添加JPanel BorderLayout.NORTH。

請閱讀佈局教程和他們的API,因爲這裏解釋了大部分內容。