#java #swing #jframe #jlabel
Вопрос:
В настоящее время я кодирую программу Java, которая включает загрузку изображения карты на JLabel. Я хотел бы нарисовать на этой карте изображение. Возможно ли это, и если да, то как?
Комментарии:
1. 1) Переопределите метод paintComponent(…) в JLabel, чтобы добавить логику добавления графики. Прочитайте раздел из руководства Swing по пользовательской живописи для получения дополнительной информации и примеров. Учебник основан на JPanel, но концепция та же. Сначала вы вызываете
super.paintComponent(g)
, чтобы выполнить рисование метки по умолчанию, а затем добавляете свой пользовательский код.2. Оба способа, предложенные @camickr, работают, но я обычно использую третий способ, который устраняет необходимость в расширении или
JLabel
илиJPanel
. В основном это выглядит так: 1) Загрузите изображение, представляющее интерес, и сохраните его как атрибут класса. 2) Создайте метод, который создает копию этого изображения для отображения в метке, содержащейся на панели. 3) При «изменении» (например, пользователь, проводящий мышью по метке, чтобы нарисовать линию) отрегулируйте рисунок копии изображения, прежде чем устанавливать его в качествеImageIcon
метки.