gpt4 book ai didi

java - 使用 ComponentAdapter 确定 Frame Resize 何时完成

转载 作者:行者123 更新时间:2023-11-29 05:31:32 25 4
gpt4 key购买 nike

我正在使用一个简单的 ComponentAdapter 在调整其添加到的主 JFrame 窗口大小时执行某些操作。它可以毫无问题地接收事件,但我只想在用户完成 调整大小后采取行动。 componentResized()方法为调整大小的每个像素变化触发多个事件,我不希望这样,因为我需要在调整窗口大小时缩放图像,并且当它为每个像素完成时它会产生巨大的滞后。

我尝试在框架上使用 MouseListener 来检测鼠标上下事件,以设置一个 boolean 值来判断当前是否正在调整大小,但事件从未被触发。

这是简单的 ComponentAdapter:

private class ResizeListener extends ComponentAdapter {     
public void componentResized(ComponentEvent e) {
onResize();
}
}

然后使用 this.addComponentListener(new ResizeListener()); 将其添加到构造函数中的框架中该类正在扩展 JFrame,因此应将其添加到框架中。我尝试使用 getContentPane().addComponentListener(new ResizeListener());但这没有任何区别。

有关仅运行 componentResized() 的简单或有效方法的任何建议窗口实际完成调整大小时的方法将不胜感激。

目标

我正在实现一个 PDF 阅读器,它可以将正在查看的页面转换为 BufferedImage。当用户调整窗口大小时,我需要适本地缩放图像,这意味着我不能让布局管理器为我照管。 componentResized 事件的数量造成了巨大的滞后,因为图像正在根据用户调整大小路径的每个位置调整大小,因此我需要在调整大小完成后执行此操作。

最佳答案

Toolkit.getDefaultToolkit().setDynamicLayout(false);

这将影响应用程序中的所有窗口,因此如果您只需要特定框架的此功能,您可能还需要向框架添加一个 WindowListener,然后处理 windowActivated/windowDeactivated 事件以设置此属性。

关于java - 使用 ComponentAdapter 确定 Frame Resize 何时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925193/

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