2015-01-19 4 views
2

enter image description here 나는 GridLayout을 사용하고 있으며, 모든 패널의 크기는 동일합니다. 어떻게 크기를 변경할 수 있습니까?GridLayout 사용하기 - JPanel 크기를 설정하는 방법?

나는 getPreferred/Minimum/MaximumSize 함수를 사용해 보았지만 아무 것도하지 않았다. 여전히 GridLayout에 머물고 싶습니다. 제안이 있으십니까?

+0

GridLayout 보유한 구성 요소의 크기를 서로 다르게 설정하려고합니까? GridLayout은 이것을 허용하지 않습니다. 귀하의 질문을 명확히하십시오. 코드 및/또는 이미지를 보여주십시오. –

+0

'GridLayout'은 최선의 선택은 아니지만, 구성 요소가'getPreferred/Minimum/MaximumSize'를 통해 레이아웃 관리자 API에 크기 힌트를 제공한다는 것을 기억하십시오. – MadProgrammer

+1

look [here] (http://stackoverflow.com/questions/4699892/) 구성 방법 크기와 함께 그리드 레이 아웃과 함께하는 것이 더 낫다. – Dando18

답변

2

그래서 북쪽에 위치한 첫 번째 JPanel로 위의 모든 부분을 분할했습니다.
그런 다음 버튼이있는 JPanel은 같은 위치에 놓였습니다.
이제 스크롤 된 JLabel이 CENTER에 위치하므로 유연하게 사용할 수 있습니다.

JPanel mainPanel1 = new JPanel(new GridLayout(6,1)); 
    mainPanel1.add(titleLabel); 
    mainPanel1.add(participantPanel); 
    mainPanel1.add(swimPanel); 
    mainPanel1.add(ridePanel); 
    mainPanel1.add(runPanel); 
    mainPanel1.add(categoriesPanel); 

    JPanel mainPanel2 = new JPanel(new GridLayout(1,1));   
    mainPanel2.add(listPanel); 

    JPanel mainPanel3 = new JPanel(new GridLayout(1,1)); 
    mainPanel3.add(buttonsPanel); 

    this.getContentPane().add(mainPanel1, BorderLayout.NORTH); 
    this.getContentPane().add(mainPanel2, BorderLayout.CENTER); 
    this.getContentPane().add(mainPanel3, BorderLayout.SOUTH); 
5

매우 자연적으로 GridLayout이 보유한 모든 구성 요소의 크기는 동일합니다. 당신이 원하는 경우에 그들을

  1. 당신은 GridBagLayout로 또는 MigLayout 또는
  2. 사용 GridLayout과 다른 구성 요소에 대한 컨테이너 역할을 동일한 크기의 JPanel의를 개최하는 등 다른 레이아웃을 사용할 수 있습니다, 다른 크기가 될 수 있습니다. 물론 내부 구성 요소는 크기가 다를 수 있습니다. 예를 들어 : 체스 보드를 GridLayout에 보유하고 있지만 각 셀이 크기가 다양한 체스 조각을 보유 할 수있게하는 체스 보드.

귀하의 질문에 답변이되지 않는 경우 귀하의 질문을 명확히하십시오.

+2

@RoeyGolzarpoor이 답변은 여전히 ​​적용됩니다. 레이아웃 관리자의 여러 레이어를 사용하지 않으면 모든 셀이 같은 크기가되며 셀 내의 구성 요소의 크기를 조정할 수 있습니다. – Dando18