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