Сброс графики в JPanel

#java #swing #jpanel #graphics2d

#java #качать #jpanel #graphics2d

Вопрос:

Следующий код рисует структуру молекулы. Если я не передам молекулу, последняя структура продолжит отображаться в JPanel. Как мне сбросить это на пустой холст, когда молекулы нет. Другими словами, что я должен поместить внутрь else{} метода drawMolecule()?

Комментарии:

1. Я сомневаюсь, что это связано с вашей проблемой, но у вас есть опечатка в super.paintComponents (g). Избавьтесь от «s», это должно быть супер.paintComponent (g);

Ответ №1:

Вы могли бы создать новое BufferedImage в else или вы могли бы получить компонент Graphics2D BufferedImage, установить его цвет фона с помощью setBackground(Color c) , а затем очистить изображение с помощью clearRect(...) , а затем удалить объект Graphics2D, когда это будет сделано с помощью его dispose() метода.

На самом деле, при просмотре вашего кода я не вижу, чтобы вы это делали. Не забудьте удалить графику или ресурс Graphics2D после завершения их использования, если вы создали их самостоятельно (не если они получены из JVM, скажем, с помощью метода paint или paintComponent).

Комментарии:

1. Я пробовал как dispose(), так и clearRect().. Не сработало! Я также попытался переместить Graphics2D g2 = (Graphics2D) image.getGraphics(); g2.setColor(цвет. БЕЛЫЙ); g2.fillRect(0, 0, w, h); из второго блока if.. ничего!

2. @lochi: «не сработало» мало что говорит нам. Покажите свой новый код и любые сообщения об ошибках или информацию о неправильном поведении в качестве правки к вашему исходному сообщению, а затем, пожалуйста, отметьте меня обратно.