当我尝试获取JPanel的边界时,它总是返回(
我在JPanel类的构造函数中使用this.getBounds()
:
java.awt.Rectangle[x=0,y=0,width=0,height=0]
在渲染Swing组件的什么时候这实际上是设置的?在对边界进行大小调整后是否会发生组件事件?
答案 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允许它。这具体涉及组件本身,而不是所有相关元素,如边界等。