gpt4 book ai didi

java - 为什么构造函数中 getHeight() 和 getWidth() 返回 0?我该如何避免这种情况?

转载 作者:行者123 更新时间:2023-12-01 10:20:52 25 4
gpt4 key购买 nike

以下是我的代码,我试图绘制一条从屏幕一端延伸到另一端的线,但是当我调用 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 事件,但是您想了解所有 size 事件吗?当一个组件第一次布局时,它可能会多次调整大小(到不同的大小),您关心哪一个?

关于java - 为什么构造函数中 getHeight() 和 getWidth() 返回 0?我该如何避免这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com