Содержание JDesktopPane исчезает при изменении размера - Java Swing - PullRequest
2 голосов
/ 20 мая 2011

Я давно работаю над Java Swing. Я рисую что-то (рисую некоторые базовые фигуры, такие как круг, прямоугольник и т. Д.) На JDesktopPane, и как только я изменяю размер окна фрейма, содержащего jDesktopPane, или перетаскиваю какое-то другое окно поверх этого фрейма, нарисованные фигуры исчезают. Я использую объект класса BufferedImage, чтобы сохранить изображение. Так есть ли способ предотвратить исчезновение фигур или перекрасить их, когда они исчезнут?

Ответы [ 2 ]

3 голосов
/ 20 мая 2011

Необходимо убедиться, что вы сохраняете то, что рисуете, и перерисовываете его каждый раз в методе paintComponent().Этот метод вызывается автоматически при необходимости перекраски (например, из-за изменения размера).

2 голосов
/ 20 мая 2011

Я могу только дать предположение, поскольку вы решили не публиковать необходимый код, но я предлагаю:

  • Не получайте ваш объект Graphics, вызывая getGraphics для компонента. Вместо
  • Обязательно выполняйте рисование в классе, который подклассирует JComponent или одного из его дочерних элементов (например, JPanel).
  • отрисовка вашего BufferedImage в методе JComponent paintComponent сразу после вызова super.paintComponent () в том же методе. Используйте объект Graphics, предоставленный JVM и переданный в параметр метода.
  • Чтобы убедиться, что подпись вашего метода paintComponent верна, поместите аннотацию @Override непосредственно перед ней. В противном случае, если это не так, JVM, вероятно, не вызовет его, когда вы ожидаете.
  • Но также, пожалуйста, задавая вопрос здесь, постарайтесь дать нам достаточно информации, чтобы нам не приходилось догадываться. Поскольку ваша проблема связана с графикой, имеет смысл опубликовать код, связанный с графикой, верно?
...