Рисунок на JPanel или рамке?

#java #swing #jframe #jlabel

Вопрос:

В настоящее время я кодирую программу Java, которая включает загрузку изображения карты на JLabel. Я хотел бы нарисовать на этой карте изображение. Возможно ли это, и если да, то как?

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

1. 1) Переопределите метод paintComponent(…) в JLabel, чтобы добавить логику добавления графики. Прочитайте раздел из руководства Swing по пользовательской живописи для получения дополнительной информации и примеров. Учебник основан на JPanel, но концепция та же. Сначала вы вызываете super.paintComponent(g) , чтобы выполнить рисование метки по умолчанию, а затем добавляете свой пользовательский код.

2. Оба способа, предложенные @camickr, работают, но я обычно использую третий способ, который устраняет необходимость в расширении или JLabel или JPanel . В основном это выглядит так: 1) Загрузите изображение, представляющее интерес, и сохраните его как атрибут класса. 2) Создайте метод, который создает копию этого изображения для отображения в метке, содержащейся на панели. 3) При «изменении» (например, пользователь, проводящий мышью по метке, чтобы нарисовать линию) отрегулируйте рисунок копии изображения, прежде чем устанавливать его в качестве ImageIcon метки.