2013-10-24 4 views
0

Мне нужно поместить круг в центр сетки GridBagLayout. Как найти текущую ширину и высоту ячейки?Как получить размер ячейки GridBagLayout

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

На данный момент я использую размер фрейма (BroadSize), но я хочу, чтобы добавить другие элементы GridBag, которые сделали бы его в заблуждение.

ответ

0

Вы не можете получить размер ячейки.

Вам необходимо использовать соответствующий компонент, который будет центрировать себя в доступном пространстве. Возможно, вам придется переопределить значения вашего настраиваемого компонента setAlignmentX() и setAlignmentY(). Разумеется, этот подход также предполагает, что вы правильно переопределили метод вашего компонента getPreferredSize().

Самый простой способ - просто использовать JLabel с иконкой. См. Playing With Shapes для простого способа сделать это.

+0

Проблема в том, что мне нужен круг с фиксированным размером относительно ячейки. Таким образом, круг в cellA должен иметь диаметр 80% ширины ячейки, а круг в ячейке B должен иметь диаметр 50% ширины ячейки. Не имеет значения, каковы фактические размеры - до тех пор, пока круг в cellA и CellB не будет поддерживать относительную разницу в размерах. – ManInMoon

+0

@ManInMoon, тогда вы можете попытаться убедиться, что вы используете ограничение «fill» на компоненте. Затем в вашей картине вы можете использовать методы 'getWidth()' и 'getHeight()' ваших компонентов. Эти значения должны отражать текущий размер компонента, который заполняется в ячейке. – camickr

Смежные вопросы