JPanel的Java设置维度

JPanel的Java设置维度,java,swing,jpanel,layout-manager,border-layout,Java,Swing,Jpanel,Layout Manager,Border Layout,我已经在一个JPanel中创建了一个JPanel,我想将它的宽度和高度属性设置为一些特定的数字。这是我到目前为止所拥有的 searchPanel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); searchPanel.setBorder(BorderFactory.createCompoundBorder(new javax.swing.border.Soft

我已经在一个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。现在,由于BorderLayout.NORTH约束,我的内部“searchPanel”沿屏幕的整个顶部延伸,但我只希望它作为左上角的一个小面板,但是setSize对我不起作用


谢谢。

大多数版面管理员更看重首选大小,因此您可以尝试在JPanel上设置PreferredSize(…)。但无论您做什么,如果您添加它BorderLayout.NORTH,它都将拉伸以填充包含JPanel的整个北位置。您可能希望将searchPanel嵌套到另一个JPanel中(可能是使用BoxLayout的JPanel),并添加该JPanel BorderLayout.NORTH


请阅读版面教程及其API,因为其中对大部分内容进行了解释。

大多数版面管理器更看重首选大小,因此您可以在JPanel上尝试设置PreferredSize(…)。但无论您做什么,如果您添加它BorderLayout.NORTH,它都将拉伸以填充包含JPanel的整个北位置。您可能希望将searchPanel嵌套到另一个JPanel中(可能是使用BoxLayout的JPanel),并添加该JPanel BorderLayout.NORTH

请阅读布局教程和它们的API,因为这里已经解释了其中的大部分内容