【问题标题】:Repaint frame when resized?调整大小时重新绘制框架?
【发布时间】:2009-10-14 22:58:47
【问题描述】:

如何在 Frame 最大化或调整大小后立即将其强制为 repaint()

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

【问题讨论】:

    标签: java awt frame repaint maximize


    【解决方案1】:

    注册一个组件监听器:

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

    【讨论】:

    • @joef:如果这是您需要的,请点击“接受”答案。
    • 我有种感觉,等世界经济回暖,这个还是没有“接受”的。
    • 可以肯定地说经济现在已经恢复。你的直觉很好!
    【解决方案2】:

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

    请注意,无论在调整大小时是否重复绘制,而不是在放开鼠标按钮后仅绘制一次,这可能是一个操作系统选项。

    【讨论】:

      猜你喜欢
      • 2012-12-30
      • 2019-04-17
      • 2015-09-09
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      相关资源
      最近更新 更多