2011-07-31 6 views
0

JPanel 내에 JPanel을 만들었으므로 width 및 height 속성을 특정 숫자로 설정하고 싶습니다. 여기 내가 지금까지 가지고있는 것이있다.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을 나타냅니다. 지금은 내 inner "searchPanel"BorderLayout.NORTH 제약으로 인해 화면의 전체 위쪽 섹션을 따라 뻗어 있지만 왼쪽 된 위 모서리에 작은 패널로 원하는하지만 setSize 나를 위해 작동하지 않았다.

감사합니다.

답변

3

대부분의 레이아웃 관리자는 크기보다 원하는 크기를 중요시하므로 JPanel에서 setPreferredSize (...)를 사용해보십시오. 그러나 당신이 무엇을 하든지 상관없이 BorderLayout.NORTH를 추가하면 JPanel을 포함하는 북쪽의 전체 위치를 채 웁니다. searchPanel을 다른 JPanel (BoxLayout을 사용하는 JPanel)에 중첩시키고 JPanel BorderLayout.NORTH를 추가 할 수 있습니다.

레이아웃 튜토리얼과 해당 API에 대한 대부분의 설명이 나와 있습니다.