вывод изображения на экран в java

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

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.awt.image.BufferedImage;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JPanel{
    Image img = new ImageIcon("3.png").getImage();//записываем изображение в переменную



    public static void main(String[] args){
        //создаем окно
        JFrame fr = new JFrame();
        fr.setSize(1900, 1000);
        fr.setVisible(true);
        fr.add(new Main()); 
        fr.setResizable(false);
    }
    public void paint(Graphics g){

        g.drawImage(img, 0, 0, null);//выводим линию

        g.drawLine(20, 20, 200, 200);//выводим изображение



    }
}

Ответы (2 шт):

Автор решения: Олексій Моренець

Перенесите создание переменной img в метод paint(). Или сделайте ее static)

→ Ссылка
Автор решения: Сочиняй-Хан

Изображение где лежит? В корневой папке или в src? Если в src то надо путь указывать Image img = new ImageIcon("src/3.png").getImage();

→ Ссылка