Как добавить изображение в JFrame, добавив JLabel? - PullRequest
0 голосов
/ 14 февраля 2020

Привет, ребята! У меня проблема с моим кодом. Я хочу установить фон JFrame, добавив JLabel, на котором я нарисовал изображение.

Но изображение не отображается, кстати, изображение читается правильно (без исключений).

Я работаю с несколькими классами: Var. java, Label. java, Gui. java -> Все в одной упаковке

  public class Main {

  public static void main(String[] args) {

      new Gui();
      new Label();
      new Var();
      new KeyHandler();
  }
}
import java.awt.Color;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class Gui {

    public Gui() {

        Var.jf1 = new JFrame();
        Var.jf1.setSize(Var.breite, Var.höhe);
        Var.jf1.setLocationRelativeTo(null);
        Var.jf1.setLayout(null);
        Var.jf1.setTitle("Meriadoc Brandybock");
        Var.jf1.setResizable(false);
        Var.jf1.requestFocus();
        Var.jf1.addKeyListener((KeyListener) new KeyHandler());
        Var.jf1.setVisible(true);

        Var.lbl1 = new Label();
        Var.lbl1.setBounds(0, 0, Var.breite, Var.höhe);
        Var.lbl1.setVisible(true);
        Var.jf1.add(Var.lbl1);


    }

}
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JLabel;

public class Label extends JLabel{

    protected void paintcomponent(Graphics g){

        super.paintComponent(g);

        Graphics2D g2d = (Graphics2D) g;

        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

        g.drawImage(Var.b1, 0, 0, 1000, 600, null);

        repaint();

    }

}

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

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

public class Var {


    static JFrame jf1;
    static Label lbl1;

    static int breite = 1000;
    static int höhe = 600;

    static boolean moveUP = false;
    static boolean moveDOWN = false;
    static boolean moveRIGHT = false;
    static boolean moveLEFT = false;

    static BufferedImage b1;




    public Var() {

        try {
            Var.b1 = ImageIO.read(new File("rsc/b1.png"));
        } catch(IOException e){
            e.printStackTrace();
            System.out.println("Background konnte nicht geladen werden");
        }

    }

}

Большое спасибо заранее за ваши ответы!

...