2014-03-13 2 views
1

나는 계산기를 만들고있다. 나는 버튼을 배치하는 GridBagLayout을 사용하고, 지금까지는 다음과 같습니다 : 나는 그리드의 정확한 크기를 찾기 위해 노력하고GridBagLayout의 치수를 얻으려면 어떻게해야합니까?

normal calculator look

그래서 그것을 일치하도록 JFrame의 크기를 설정할 수 있습니다. GridBagLayout API에서 나는 세 가지 방법, 즉 maximumLayoutSize, minimumLayoutSizepreferredLayoutSize을 발견했습니다. 나는 세 가지를 시도하고 을 각 크기로 설정하여 작동 방식을 확인했습니다.

maximumLayoutSize에 의해 반환 된 치수는 거대했습니다 (수백만 및 수십억). 이 모양 I는 minimumLayoutSize 의해 반환 치수를 사용하면

는, I는 폭있어 = 151, 높이 = 150 :

I는 preferredLayoutSize 의해 반환 치수를 사용하면, I는 폭을 가지고

enter image description here

= 다음과 같다 (220), 높이 = 180 : 그것은 인 것처럼 정상 볼때 대신

enter image description here

, I는 GridBagLayout에 치수를 원하는 첫 번째 그림. 이 치수는 어떻게 얻을 수 있습니까?

+1

고전적인 [XY 문제] (http://meta.stackexchange.com/q/66377/155831)의 훌륭한 설명 (이미지는 수천 단어로 그립니다). +1 –

+1

좋은 읽을 거리였습니다. 이전 질문에 대해 다시 생각해 보았습니다. – joshreesjones

+0

* "나는 그걸 몇 번이나 해냈다"* 나도 마찬가지다. :) –

답변

4

전화, JFrame#pack, 그것은 프레임 장식의 필요성과 프레임 내용의 기본 크기에 따라 프레임을 포장합니다.

+0

frame.pack()을 포함하면 frame.setSize (width, height)를 생략해도 괜찮습니까? – joshreesjones

+0

@ mathguy54 당연히, 당신은 매우 드물게 창에서'setSize'를 호출해야합니다 ... – MadProgrammer

+0

항상'pack()'을 사용해야합니까? 과거에는 모든 윈도우에'setSize()'를 사용하고 다른 BorderLayout' 영역에 컴포넌트를 추가했습니다. – joshreesjones

관련 문제