Вам нужно настроить класс, который выходит из JPanel, и другой класс, не связанный с ним, который описывает изображение, которое вы пытаетесь нарисовать.
Допустим, у вас есть два класса: Окно (которое расширяет JPanel) и Изображение (где вы загружаете изображение, которое будет отображаться в JPanel)
Если вы хотите нарисовать изображение из Image в Window классе, вам нужно создать экземпляр Image в Window классе.
Изображение должно иметь метод, который можно использовать в Окно для рисования изображения в Окно примерно так:
private void drawMe(Graphics g){
g.drawImage(someImage, x, y, null);
}
и в вашем классе Window (который выходит из JPanel) я рекомендую переопределить метод paintComponent, а не рисовать. В этом методе вы должны вызвать метод drawMe () Image и передать Graphics в качестве аргумента. Вот так:
private Image image = new Image("filePath.jpg", 10, 10); //based on the arguments you setup in the contructor
public void paintComponent(Graphics g){
image.drawMe(g); //access Image's drawMe() method and pass graphics to it
}
Все расположение чертежей и изображений обрабатывается классом Image , все, что вы делаете с классом Window , заставляет его отображаться на JPanel.