当我最大化或调整大小后,如何立即强制Frame重新绘制(repaint())?
我找不到该特定操作发生时调用的方法。我有一堆用Graphic对象在paint中编写的图形,它们的方向取决于实时反馈的getWidth()和getHeight(),但是当我最大化时却没有调用paint,只有当这些像素不幸地改变时才会调用。
注册 ComponentListener:
final Component myComponent = makeTheFrameOrWhatever();
myComponent.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e)
{
myComponent.repaint();
}
});
你需要深入挖掘,因为当你调整框架大小时,repaint()和paint()肯定会被调用 - 这是框架使其内容被绘制的唯一方式。最有可能的是,你没有看到重绘到达框架中的特定组件,可能是因为你使用的特定布局不受窗口变大的影响。或者如果你没有布局,则必须子类化Frame并显式地调用它在子组件上的paint方法,因为没有布局管理器可以为你完成这项工作。
请注意,无论是否在调整大小时重复绘制,而不仅仅是在你松开鼠标按钮后绘制一次,可能是操作系统选项。