如何根据放在它上面的图形大小来获得面板的大小

时间:2010-08-01 19:48:47

标签: java swing

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

2 个答案:

答案 0 :(得分:1)

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

这与您在Swing中通常做的事情相反:相反,您添加到面板的组件会公布其约束(请参阅java.awt.COmponent中的getPreferredSize(),getMinimumSize()和getMaximumSize())。然后,您在面板中设置的布局管理器将根据这些约束以及窗口的当前大小来处理容器内部组件的大小。

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

答案 1 :(得分:1)

您可以使用图形上下文的FontMetrics方法完成所要求的内容,但这似乎很乏味且容易出错。作为替代方案,请考虑教程How to Use Tables中的示例。

附录:正如@ camickr的评论中所述,文章Table Column Adjuster是一个很好的例子,说明如JTable这样的多功能基础组件可以在功能上得到增强,以满足不断变化的需求。相比之下,绘制多个矩形可能会逐渐变得难以维护。