我在绘制 JPanel 时遇到问题。它正确绘制,但是当我调整父容器的大小时,JPanel 会绘制在窗口的左上角以及正确的位置。
JPanel 有一个自定义绘制方法,该方法可以绘制一组不属于任何 JPanel(包括它)的组件。它们会在调用其绘制方法之前立即添加到 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 下,组件根本不会绘制。
此问题仅存在于 Windows 和 ubuntu 中,Mac 上不存在。其他系统未经测试。
有什么想法可能导致它吗?每当绘制 JPanel 时我都会检查它的位置,它从来没有位于左上角。
谢谢
最佳答案
尝试保存之前图形
的AffineTransform
并在绘制之后恢复它。
关于java - JPanel定制油漆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10008842/