JPanel定制油漆

时间:2012-04-04 09:56:37

标签: java swing jpanel paint

我在绘制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的位置,并且它从未位于左上角。

由于

1 个答案:

答案 0 :(得分:2)

尝试保存之前AffineTransform的{​​{1}}并在绘画后将其恢复。