我在绘制JPanel时遇到问题。它正确绘制,但是当我调整父容器的大小时,JPanel会在窗口的左上角以及正确的位置绘制。
JPanel有一个自定义绘制方法,它绘制一组不属于任何JPanel(包括它)的组件。它们会在调用paint方法之前立即添加到JPanel中,并在以下后立即删除:
paintOnto.setIgnoreRepaint(true);
paintOnto.add(getPaintableComponent());
getPaintableComponent().paint(g);
paintOnto.remove(getPaintableComponent());
paintOnto.setIgnoreRepaint(false);
paintOnto是对JPanel的引用,getPaintableComponent()返回要绘制的JComponent。 g是从JPanel绘制方法传递的Graphics对象。
在mac中根本不需要添加/删除代码,但在没有它的情况下,组件根本没有绘制。
此问题仅出现在windows和ubuntu中,而不是mac中。其他系统未经测试。
任何可能导致它的想法?我已经检查了JPanel的位置,并且它从未位于左上角。
由于
答案 0 :(得分:2)
尝试保存之前AffineTransform
的{{1}}并在绘画后将其恢复。