java - JPanel定制油漆

标签 java swing jpanel paint

我在绘制 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/

相关文章:

java - 在 JDialog 中丢失鼠标单击功能

java - 通过 JTable 从 ArrayList 中删除项目

java - 在使用 Netbeans 生成的代码加载主应用程序之前,如何要求登录身份验证?

java - 如果 JPanel 填满屏幕,它不会移动

java - 在面板中设置标签布局

java - 在数组列表的条目中搜索一段文本的最简单方法?

java - 由于绑定(bind)错误,在 spring-data-jpa 的 native 查询参数中使用 joda DateTime 失败

java - 当用户在其外部单击时如何使模态 JDialog 闪烁

java - 父面板未绘制

java - 使用 Java 将 PDF 转换为图像