Java Swing 反复使用 JFrame.pack() - 它的效率如何



简而言之,我想知道,如果我在已经调整大小的框架上调用JFrame.pack(),分析它是否需要很长时间,还是会立即返回? 我问的是效率原因。 我的框架中有一张图片,在循环中每秒更新很多次。 现在,必须在至少绘制第一张图片后调用JFrame.pack()以确保框架大小合适。

为了解决这个问题,我所拥有的(在伪代码中)是:

boolean flag = false
while (condition) {
    getNextPicture();
    updateFrameWithPicture()
    if (!flag) {
        frame.pack()
        flag = true;
    }
}

现在我想知道如果我只是省略了标志的检查并总是打电话给frame.pack(),是否会有问题. 如果帧已经是正确的大小,程序能否足够快地做出决定?

当我显示 RTP 套接字上收到的图像时,很难估计性能差异。

您正在对代码进行微观优化。通过套接字获取外部数据总是比重新绘制帧慢。

我实际上正在使用摆动计时器

您不应使用计时器对套接字上的图像进行实际读取。读取图像时,GUI 将阻塞。您应该使用单独的线程来读取图像。使用SwingWorker然后在图像可用时publish()图像可能会更好。有关详细信息,请阅读有关并发的 Swing 教程中的部分。

只是认为用 while 循环来描述我的问题会更容易。

不,最好给出实际代码,因为您可以看到当前代码不正确。不要猜测你在做什么。

最新更新