2012-01-08 1 views
2

저는 지뢰밭을 학교 프로젝트로 만들고 있습니다. 완료에 가까워졌지만 지금은 JFrame의 크기를 설정하는 것이 유일한 문제입니다. 난 그냥 내가 원하는 크기로 프레임을 설정하는 방법을 알아낼 수 없습니다.자바 - JFrame을 좋은 크기로 설정하는 데 문제가 있습니다

프로그램은 Windows XP의 원래 지뢰 찾기의 스윙 버전과 비슷합니다.

메인 프레임의 레이아웃은 플로우 레이아웃입니다. 시간, 광산 및 재설정 버튼의 상단 패널이 있습니다. 상단 패널은 흐름 레이아웃을 사용하고 하단 패널은 버튼에 격자 레이아웃을 사용합니다.

프레임의 콘텐츠 창 크기를 설정했습니다. 너비를 얻는 것은 쉽습니다 (행 * 내 버튼 크기의 필드 수). 그러나 문제는 높이를 올바르게 얻는 것입니다. 프레임은 항상 지뢰밭의 마지막 두 번째 행까지 내려갑니다.

나는 또한 pack()을 시도했지만 내용 창 크기가 적절하지 않은 크기로 조정됩니다.이 크기는 처음에는 적당하지 않습니다. 내가 무엇을 할 수 있을지?

+0

SSCCE를 생각해 낼 수 있으십니까? 이것은 우리가 추측 할 수있는 것처럼 문제를보기가 약간 어렵습니다. – fury

답변

3

JFrame (또는 더 나은 contentPane)에서 FlowLayout을 사용하지 마십시오. JFrame이 해당 구성 요소에 가장 적합한 크기가 아니기 때문입니다. 대신 기본 BorderLayout을 사용하지 않는 이유는 무엇입니까? 광산 셀의 getPreferredSize() 메소드가 대체되어 오버랩 된 컨테이너의 크기가 지정됩니다. 항상 그렇듯이 JFrame에 부품 번호를 기입하고 setVisible(true)을 호출하기 전에 pack()으로 전화하십시오.

+0

해보겠습니다. 그것은 기본적으로 BorderLayout을 사용했는지 몰랐습니다. – Alex

+1

완벽하게 작동합니다. 감사합니다 – Alex

+0

@AlexYan : 천만에! –

2

프레임을 추가 한 후 GridLayoutpack() 버튼의 기본 크기를 설정하십시오.

2

크기를 수동으로 설정하지 마십시오. 각 컴포넌트가 원하는 크기로 표시되도록하고 pack() 메소드를 사용해야합니다.

메인 프레임의 레이아웃은 플로우 레이아웃입니다. 시간, 광산 및 재설정 버튼의 상단 패널이 있습니다.

BorderLayout을 사용합니다. 상단 패널을 만들어 북쪽에 추가하십시오.

그런 다음 표의 패널을 작성하여 CENTER에 추가하십시오. 그리드 크기 조정의 버튼에 문제가있는 경우 JPanel을 래퍼 패널로 만들어보십시오. 이 패널에 단추를 추가 한 다음이 패널을 프레임 중앙에 추가하십시오. 패널은 원하는 크기로 유지됩니다.

관련 문제