如何在最大化或调整大小后立即强制框架repaint()
?
当发生特定操作时,我找不到调用哪种方法。我有一堆用Paint中的Graphic对象编写的图形,它们的方向取决于来自getWidth()
和getHeight()
的实时反馈,但是当我最大化时不会调用绘制,只有当这些像素发生变化时才会调用不幸。
答案 0 :(得分:15)
注册ComponentListener:
final Component myComponent = makeTheFrameOrWhatever();
myComponent.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e)
{
myComponent.repaint();
}
});
答案 1 :(得分:1)
你需要进一步挖掘,因为当你调整框架大小时,repaint()和paint()肯定是 被调用 - 这是框架可以导致它的内容被绘制的唯一方式。您很可能没有看到重绘到达框架中的特定组件,可能是因为如果窗口变大,您使用的特定布局不会受到影响。或者如果你没有布局,那么你必须将Frame子类化并明确让它在子组件上调用paint,因为没有布局管理器为你做这件事。
请注意,无论是否在重新调整时重复绘制,而不是在松开鼠标按钮后只执行一次操作系统选项。