#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: «не сработало» мало что говорит нам. Покажите свой новый код и любые сообщения об ошибках или информацию о неправильном поведении в качестве правки к вашему исходному сообщению, а затем, пожалуйста, отметьте меня обратно.