gpt4 book ai didi

java - 没有目的的 while 循环?

转载 作者:行者123 更新时间:2023-12-02 12:47:35 25 4
gpt4 key购买 nike

在阅读 Java 教程书时,我遇到了这段代码:

while(getImage().getWidth(frame) <= 0);

我一开始以为这是一个拼写错误,但它在整本书中的多个地方重复了好几次。不幸的是没有解释它的作用,所以我想知道它的目的是什么。从表面上看,我知道它基本上什么也不做,因为即使它可以返回 truefalse , while 语句没有主体。这是一个特殊的语法情况,实际上它确实做了一些事情吗?或者这只是毫无意义的代码,恰好不会对代码流产生负面影响(它不会返回任何错误,并且一切都按预期运行)。

这是它的完整方法,以防有帮助:

public void load(String filename)
{
Toolkit tk = Toolkit.getDefaultToolkit();
image = tk.getImage(getURL(filename));
while(getImage().getWidth(frame) <= 0);
double x = frame.getSize().width / 2 - width() / 2;
double y = frame.getSize().height / 2 - height() / 2;
at = AffineTransform.getTranslateInstance(x, y);
}

最佳答案

从 AWT Toolkit 获取的图像是异步加载的,这意味着您可以在图像完成加载之前获取 Image 实例。只要图像没有完全加载,它的尺寸可能还不知道,当你检查图像的宽度和高度时,它会返回负值(-1,-1)。循环实现轮询图像尺寸(或此处:宽度),直到加载图像。

当然,这不是推荐的方法(因为它会让线程毫无意义地保持忙碌)。相反,MediaTracker 类可用于等待图像完全加载:

MediaTracker tracker = new MediaTracker(new Canvas());
tracker.addImage(image, 0);
try {
tracker.waitForAll();
}
catch (InterruptedException ex) {}

关于java - 没有目的的 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898790/

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