繁体   English   中英

为什么getHeight()和getWidth()在构造函数中返回0? 以及如何避免呢?

[英]Why does getHeight() and getWidth() return 0 in the constructor? and how do I avoid that?

以下是我的代码,我试图绘制一条从屏幕一端延伸到另一端的线,但是当我调用getWidth()和getHeight()创建线对象时,这些方法返回0。为什么会发生这种情况以及如何避免这种情况。

public class LineComponent extends JComponent {

private Shapes shape;

public LineComponent() {
    shape = new Line((int) Math.round(Math.sqrt(getHeight() * getHeight() + getWidth() * getWidth()))
,new Point(getWidth() / 2, getHeight() / 2));
}

因为该组件尚未布置(它没有可定义的大小)。 在将组件添加到另一个容器并验证该容器之前,不会为组件分配大小。

如何修复取决于许多因素,例如,您可以使用ComponentListener并侦听componentResized事件,但是您是否想了解所有大小事件? 首次布置组件时,它可能会调整几次大小(以不同的大小),您在乎哪一个?

如果这是您的主要课程,那么您首先必须设置尺寸并使其可见。 否则,宽度/高度是没有意义的:

setSize(100, 100);
setVisible(true);

在构造函数中。

如果这不是您的主类,并且已添加到其他组件,则必须将线条图移到该类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM