Java 如何获取GridBagLayout的单元格大小

Java 如何获取GridBagLayout的单元格大小,java,gridbaglayout,Java,Gridbaglayout,我需要在网格的中心放置一个圆。如何找到当前单元格的宽度和高度 int center = (int) ( ((double) BoardSize / Num/2) - ((double) size/2.0) ); g.fillOval(center, center, size, size); 目前我使用的是包含框架的大小(BroadSize),但我想在GridBag中添加其他元素,这会使它变得混乱。您无法获得单元格大小 您需要使用适当的组件,使其自身在可用空间中居中。您可能需要覆盖自定义组件的

我需要在网格的中心放置一个圆。如何找到当前单元格的宽度和高度

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

目前我使用的是包含框架的大小(BroadSize),但我想在GridBag中添加其他元素,这会使它变得混乱。

您无法获得单元格大小

您需要使用适当的组件,使其自身在可用空间中居中。您可能需要覆盖自定义组件的
setAlignmentX()
setAlignmentY()
值。当然,这种方法还假设您已经正确地覆盖了组件的
getPreferredSize()
方法


最简单的方法是只使用带有图标的JLabel。请参阅,以获得一种简单的方法。

问题是,我需要圆相对于单元格具有固定的大小。所以细胞中的圆直径必须是细胞宽度的80%,细胞中的圆直径必须是细胞宽度的50%。不管实际大小是什么-只要cellA和CellB中的圆保持它们的相对大小差异。@ManInMoon,那么您可以尝试确保对组件使用“填充”约束。然后在绘制时,可以使用组件的
getWidth()
getHeight()
方法。这些值应反映单元格中正在填充的组件的当前大小。