web-dev-qa-db-fra.com

Comment dessiner une image sur un JPanel ou un JFrame?

Comment dessiner une image sur un JPanel ou un JFrame, j'ai déjà lu le tutoriel d'Oracle à ce sujet mais je n'arrive pas à faire les choses correctement. J'ai besoin de l'image "BeachRoad.png "à afficher sur un ensemble spécifique de coordonnées. Voici ce que j'ai jusqu'à présent.

public class Level1  extends JFrame implements ActionListener {

static JLayeredPane EverythingButPlayer;
static Level1 l1;

public Level1() {
    EverythingButPlayer = new JLayeredPane();

    BufferedImage img = null;
    try {
        img = ImageIO.read(new File("BeachRoad.png"));
    } catch (IOException e) {
    }
    Graphics g = img.getGraphics();
    g.drawImage(img,0, 0, EverythingButPlayer);


    this.add(EverythingButPlayer);
}

Et dans le Main (),

        l1 = new Level1();
    l1.setTitle("poop");
    l1.setSize(1920, 1080);
    l1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    l1.setVisible(true);

Merci d'avance!

15
Saucymeatman

Essaye ça:

package com.sandbox;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import Java.awt.Graphics;
import Java.awt.image.BufferedImage;
import Java.io.File;
import Java.io.IOException;

public class SwingSandbox {

    public static void main(String[] args) throws IOException {
        JFrame frame = buildFrame();

        final BufferedImage image = ImageIO.read(new File("C:\\Projects\\MavenSandbox\\src\\main\\resources\\img.jpg"));

        JPanel pane = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                g.drawImage(image, 0, 0, null);
            }
        };


        frame.add(pane);
    }


    private static JFrame buildFrame() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setSize(200, 200);
        frame.setVisible(true);
        return frame;
    }


}
24
Daniel Kaplan

Il existe de nombreuses méthodes, mais je remplace toujours la Paint(Graphics g) d'une JComponent et j'utilise g.drawImage(...)

edit: Je faisais un échantillon, mais tieTYT l'a fait parfaitement, regardez sa réponse :)

4
NiziL