2013-10-24 2 views
0

GridBagLayout 그리드의 중앙에 원을 배치해야합니다. 현재 셀 너비와 높이를 어떻게 찾을 수 있습니까? 순간 GridBagLayout의 셀 크기를 얻는 방법

int center = (int) ( ((double) BoardSize/Num/2) - ((double) size/2.0)); 
g.fillOval(center, center, size, size); 

나는 포함하는 프레임 (BroadSize)의 크기를 사용하고 있지만, 나는 그것이 혼란을 만들 것 구라 두 가방에 다른 요소를 추가 할 수 있습니다.

답변

0

셀 크기를 가져올 수 없습니다.

사용 가능한 공간을 중심으로 적절한 구성 요소를 사용해야합니다. 사용자 지정 구성 요소의 값인 setAlignmentX()setAlignmentY()을 재정의해야 할 수 있습니다. 물론이 방법은 구성 요소의 getPreferredSize() 메서드를 제대로 재정의했다고 가정합니다.

가장 쉬운 방법은 아이콘이있는 JLabel을 사용하는 것입니다. 이를 수행하는 쉬운 방법은 Playing With Shapes을 참조하십시오.

+0

문제는 셀에 대해 고정 된 크기의 원이 필요하다는 것입니다. 그래서 세포 A의 원은 80 % cellA 너비의 직경을 가져야하고 cellB의 원은 50 % cellB 너비의 직경을 가져야합니다. cellA 및 CellB의 원이 상대적인 크기 차이를 유지하는 한 실제 크기가 무엇인지는 중요하지 않습니다. – ManInMoon

+0

@ ManInMoon을 사용하면 구성 요소에 "채우기"제약 조건을 사용하는지 확인할 수 있습니다. 그리기에서 당신은 컴포넌트의'getWidth()'와'getHeight()'메소드를 사용할 수있다. 이 값은 셀에 채워지는 구성 요소의 현재 크기를 반영해야합니다. – camickr