webentwicklung-frage-antwort-db.com.de

Wie zeichne ich ein Bild auf ein JPanel oder einen JFrame?

Wie zeichne ich ein Bild auf ein JPanel oder einen JFrame? Ich habe das Oracle-Tutorial dazu bereits gelesen, kann es aber anscheinend nicht richtig darstellen. Ich brauche das Bild "BeachRoad.png "auf einem bestimmten Satz von Koordinaten angezeigt werden. Hier ist, was ich bisher habe.

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);
}

Und in der Haupt (),

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

Danke im Voraus!

15
Saucymeatman

Versuche dies:

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

Es gibt viele Methoden, aber ich überschreibe immer die Paint(Graphics g) eines JComponent und verwende g.drawImage(...)

edit: Ich habe eine Probe gemacht, aber tieTYT hat es perfekt gemacht, sieh dir seine Antwort an :)

4
NiziL