Java 如何根据放置在面板上的图形的大小获取面板的大小

Java 如何根据放置在面板上的图形的大小获取面板的大小,java,swing,Java,Swing,我正在写一个程序,通过绘制多个矩形来绘制表格。表的行和列在运行时设置。那么,我如何知道显示表格的jpanel的大小呢?我不知道我是否完全理解您的问题,但我会试试看。如果我理解正确,您想知道设置JPanel的大小,以便它可以显示您的表 这与通常在Swing中执行操作的方式相反:相反,添加到面板中的组件会公布其约束(请参见中的getPreferredSize()、getMinimumSize()和getMaximumSize()。然后,您在面板中设置的布局管理器将根据这些约束和窗口的当前大小调整容器

我正在写一个程序,通过绘制多个矩形来绘制表格。表的行和列在运行时设置。那么,我如何知道显示表格的jpanel的大小呢?

我不知道我是否完全理解您的问题,但我会试试看。如果我理解正确,您想知道设置JPanel的大小,以便它可以显示您的表

这与通常在Swing中执行操作的方式相反:相反,添加到面板中的组件会公布其约束(请参见中的getPreferredSize()、getMinimumSize()和getMaximumSize()。然后,您在面板中设置的布局管理器将根据这些约束和窗口的当前大小调整容器内组件的大小


将所有组件添加到JPanel实例后,还可以使用其getPreferredSize()方法获得布局了所有子组件的面板的“首选大小”。(IIRC)

您所要求的内容可以使用图形上下文的
FontMetrics
方法来完成,但它看起来很乏味,而且容易出错。作为备选方案,请考虑教程中的示例。


附录:正如@ CAMKICR的评论所建议的,本文是一个很好的例子,说明一个多功能的基础组件,如“代码> JTab< /Cord>”如何在功能上得到增强,以满足不断发展的需要。相比之下,绘制多个矩形可能会越来越难维护。

谢谢您的回答。实际上,我正在尝试绘制矩形来表示表格单元格,并将字符串作为数据放在矩形内。矩形的大小及其编号在paintComponent中设置。然后表格显示在框架中的面板中。我想知道的是如何根据paintComponent绘制的表的大小设置面板的精确大小。谢谢你advance@tsmakalagy:正如@vanza所建议的,一个合适的布局管理器将为您完成大部分工作。这是一个“布局管理器的视觉指南”+1,不要重新发明轮子,使用JTable。表列调整器()可以帮助您正确调整列的大小。