2

我已经在 J​​ava Swing 上工作了一段时间。我在 JDesktopPane 上绘制一些东西(绘制一些基本形状,如圆形、矩形等),一旦我调整包含 jDesktopPane 的框架窗口的大小或在该框架上拖动一些其他窗口,绘制的形状就会消失。我使用 BufferedImage 类的对象来保存图像。那么有什么方法可以防止形状消失或在它们消失时重新绘制?

4

2 回答 2

3

您需要确保在方法中每次都保存您绘制的内容并重新绘制它paintComponent()。每当需要重新绘制时(例如:因为调整大小),都会自动调用此方法。

于 2011-05-19T23:07:06.623 回答
2

我只能提供一个猜测,因为您决定不发布必要的代码,但我的建议是:

  • 不要通过在组件上调用 getGraphics 来获取您的 Graphics 对象。反而,
  • 请务必在继承 JComponent 或其子类(例如 JPanel)的类中进行绘图。
  • 在同一方法中调用 super.paintComponent() 后立即在 JComponent 的 paintComponent 方法中绘制 BufferedImage。使用 JVM 提供并传递给方法参数的 Graphics 对象。
  • 为确保您的paintComponent 方法的签名正确,请在其前面放置一个@Override 注释。否则,如果它不正确,JVM 可能不会在您期望的时候调用它。
  • 但是,当在这里提出问题时,请尽量给我们足够的信息,这样我们就不必猜测了。由于您的问题与图形相关,因此发布与图形相关的代码是有意义的,对吗?
于 2011-05-19T23:07:46.147 回答