2011-07-31 235 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,因为这里解释了大部分内容。