E
E
Elfino482016-09-19 12:12:53
Java
Elfino48, 2016-09-19 12:12:53

How to display an image on a JFrame?

Hello! Help the ne'er-do-well to bring the image to the panel (in this case, to the frame). Yes, I know how to google, I searched everywhere and found it, but for some reason the code does not want to work (the image is not displayed on the screen). Here is one example code:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;

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

public class Main extends JPanel{
  
  Image img = new ImageIcon("/images/butt.png").getImage();
  
  public static void main(String[] args){
    JFrame fr = new JFrame();
    fr.setSize(500,500);
    fr.setVisible(true);
    fr.add(new Main());
  }
  public void paintComponent(Graphics g){
    g.drawImage(img, 0, 0, null);
  }	
}

Answer the question

In order to leave comments, you need to log in

2 answer(s)
E
Evgeny Kornachev, 2016-09-19
@Elfino48

You have a panel that you add to the frame has zero dimensions, don't forget.
Do so.

JFrame fr = new JFrame();
//устанавливаем абсолюбтное позиционирование на фрейме
fr.setLayout(null);
fr.setSize(500,500);

Main m = new Main();
//устанавливаем размеры и координаты компонента для размещения в родителя с абсолютным позиционированием
m.setBounds(0,0,500,500);
fr.add(m);

//обязательная вещь, говорит о том что когда ты закроешь окно - и приложение тоже должно закрыться, если этого не сделать, то после закрытия окна приложение продолжит работу и будет висеть в памяти
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setVisible(true);

If possible, do not use swing, but immediately go to JavaFX

E
Eugene, 2016-09-19
@zolt85

public void paintComponent(Graphics g){
    g.drawImage(img, 0, 0, null);
  }

I feel I need to call this piece of code somewhere ...

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question