繁体   English   中英

调整大小时重绘框架?

[英]Repaint frame when resized?

在最大化或调整大小后,我如何强制框架立即repaint()

在发生特定操作时,我找不到调用哪种方法。 我有一堆用Paint中的Graphic对象编写的图形,它们的方向取决于来自getWidth()getHeight()的实时反馈,但是当我最大化时不会调用paint,只有当这些像素不幸地发生变化时才会调用。

注册ComponentListener:

final Component myComponent = makeTheFrameOrWhatever();
myComponent.addComponentListener(new ComponentAdapter() {
    @Override
    public void componentResized(ComponentEvent e)
    {
        myComponent.repaint();
    }
});

你需要进一步挖掘,因为当你调整框架大小时调用repaint()和paint()肯定会调用 - 这是框架可以导致它的内容被绘制的唯一方法。 您很可能没有看到重绘到达框架中的特定组件,可能是因为如果窗口变大,您使用的特定布局不会受到影响。 或者如果你没有布局,那么你必须子类化Frame并明确地让它在子组件上调用paint,因为没有布局管理器为你做这件事。

请注意,在调整大小是否重复执行绘制,而不是在松开鼠标按钮后只执行一次可能是操作系统选项。

暂无
暂无

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

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