调整大小时,JDesktopPane的内容会消失 - Java Swing

时间:2011-05-19 22:43:50

标签: java image swing jdesktoppane

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

  • 不要通过在组件上调用getGraphics来获取Graphics对象。取而代之的是,
  • 请确保在JIConent或其子项之一(例如JPanel)的类中进行绘制。
  • 在同一方法中调用super.paintComponent()后,立即在JComponent的paintComponent方法中绘制BufferedImage。使用JVM提供的Graphics对象并将其传递给方法的参数。
  • 要确保paintComponent方法的签名正确,请在其前面放置@Override注释。否则,如果它不正确,JVM可能不会在你期望的时候调用它。
  • 但是,请在这里提问时尽量给我们足够的信息,以便我们不必猜测。由于您的问题与图形相关,因此发布与图形相关的代码是有意义的,对吧?