2013-03-12 2 views
1

안녕하세요 3 개의 다른 JButton 어레이를 만들기 위해 3 개의 루프를 만들었습니다. 그리드 레이 아웃에 넣습니다. 왼쪽과 오른쪽이 잘 돌아가지만 센터는 패널을 채울 것입니다. 나는 그것이 오른쪽Java : JButton 배열이 크기를 변경하지 않습니다

에 원과 같은 크기를 갖고 싶어

 btnPanel = new JPanel(); 
    btnPanel.setLayout(new GridLayout(12, 4, 5, 5)); 
    btnPanel.setBorder(new EmptyBorder(10 ,10 ,10 ,10)); 

    for (int i = 0; i < 12; i++) { 
     for (int j = 0; j < 4; j++) { 
      buttons[j][i] = new KleurenButton(""); 
      buttons[j][i].setPreferredSize(new Dimension (50, 50)); 
      btnPanel.add(buttons[j][i]); 
      buttons[j][i].setEnabled(false); 

     } 

    } 

: 여기

 rightPanel = new JPanel(); 
    rightPanel.setLayout(new GridLayout(12, 4, 5, 5)); 
    rightPanel.setBorder(new EmptyBorder(10 ,10 ,10 ,10)); 


    for (int a = 0; a < 12; a++) { 
     for (int b = 0; b < 4; b++) { 
      battons[b][a] = new feedbackKnop.RechterKnop(); 
      battons[b][a].setPreferredSize(new Dimension(50, 50)); 
      rightPanel.add(battons[b][a]); 
      battons[b][a].setEnabled(false); 
     } 
    } 

는 센터 내 코드입니다 : 여기

는 오른쪽에 대한 내 코드입니다

결과 :

result

+0

세 패널에 대해 사용중인 레이아웃 관리자는 무엇입니까? 'BorderLayout'처럼 보입니다 – MadProgrammer

+0

예 BorderLayout입니다 – Glenndisimo

+0

@Glenndisimo'BorderLayout'은 항상 테두리에 최소 공간을주고 가운데에는 공간의 나머지 부분을줍니다. –

답변

1

GridLayout을 사용하면 모든 모눈의 크기가 동일 해지며 BorderLayout이 창을 채우기 위해 가운데를 확장합니다. 이 문제를 해결하려면 고정 할 창 크기 (또는 특정 종횡비)를 적용하거나 자동으로 구성 요소를 확장하지 않는 다른 레이아웃을 선택해야합니다. GroupLayout은 매우 유명합니다.

1

코멘트 작성자의 제안대로 BorderLayout에 문제가 있습니다. BorderLayout에는 "탐욕스러운"CENTER 패널이 있습니다. 즉, 기본적으로 JComponent가 전체 크기에 맞게 확장됩니다. 이는 preferredSize를 사용할 테두리 (NORTH, SOUTH 등)와는 다릅니다. 그래서 당신의 오른쪽과 왼쪽 패널은 뻗어 있지 않습니다.

간단한 해결책 (레이아웃을 크게 변경하지 않고)은 JPanel을 가운데에 추가하고 FlowLayout을 부여한 다음 중앙 격자 패널을 추가하는 것이 좋습니다. 이상적이지는 않지만보기를 프로토 타입하는 빠른 방법 일 수 있습니다.

관련 문제