为什么JCompnent.getBounds()总是返回0值?

时间:2014-08-24 21:38:36

标签: java swing jpanel jcomponent bounds

当我尝试获取JPanel的边界时,它总是返回( 我在JPanel类的构造函数中使用this.getBounds()

java.awt.Rectangle[x=0,y=0,width=0,height=0]

在渲染Swing组件的什么时候这实际上是设置的?在对边界进行大小调整后是否会发生组件事件?

2 个答案:

答案 0 :(得分:1)

在GUI的构造函数中,组件尚未呈现,因此它们的边界将为[0,0]。只有在顶级窗口(例如包含JFrame)上调用pack()setVisible(true)后才能呈现这些组件。但是你的问题引出了为什么你在这里需要这些信息的问题?您打算如何处理这些数据?还有其他位置可以获取信息并且可以使用,例如JComponent的paintComponent方法或ComponentListener。

答案 1 :(得分:-2)

好的,谢谢你的回复,但我明白了。基本上我需要从JComponent覆盖paint()方法。此时,正确生成矩形边界。它真的没那么复杂。

更新:

基于http://www.oracle.com/technetwork/java/painting-140037.html,它建议使用paintComponent()而不是paint(),即使API允许它。这具体涉及组件本身,而不是所有相关元素,如边界等。

相关问题