Frage von iapetoshyperion, 25

Wie kann ich ein Hintergrundbild zu einem JFrame hinzufügen, ohne das der restliche Inhalt überdeckt wird?

Ich habe bisher:

import java.awt.BorderLayout;

import java.awt.Image;

import java.io.File;

import java.io.IOException;

import javax.swing.*;

import javax.imageio.*;

public class frame extends JFrame{

private JButton b1;

private JButton b2;

private JButton b3;

private JButton b4;

private JButton b5;

private JButton b6;

Image img = null;

public static void main(String[] args) {

frame frame = new frame("Hallo");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setLayout(new BorderLayout());

JPanel p = new JPanel();

JLabel backImgPanel = new JLabel(new

ImageIcon("C:/Users/XYZ/Downloads/234.jpg"));

    backImgPanel.setLayout(null);

    backImgPanel.setOpaque(false);

    backImgPanel.setBounds(200,0,1241,795);

    p.add(backImgPanel);

    frame.setSize(1400, 795);

    frame.setLayout(null);

    frame.setVisible(true);

    frame.setResizable(false);

    frame.add(p);
}
public frame (String title){

    super(title);

    b1 = new JButton("");

    b1.setBounds(0, 100, 140, 40);

    add(b1);
    
    b3 = new JButton("");

    b3.setBounds(0, 140, 140, 40);

    add(b3);
    
    b4 = new JButton("");

    b4.setBounds(0, 180, 140, 40);

    add(b4);
    
    b5 = new JButton("");
    b5.setBounds(0, 220, 140, 40);
    add(b5);
    
    b6 = new JButton("");
    b6.setBounds(0, 260, 140, 40);
    add(b6);
    
}

} probiert. Es gibt keine Fehler, ich bekomme aber nur die Buttons angezeigt!

Und so:

import java.awt.BorderLayout;

import java.awt.Image;

import java.io.File;

import java.io.IOException;

import javax.swing.*;

import javax.imageio.*;

public class frame extends JFrame{

private JButton b1;

private JButton b2;

private JButton b3;

private JButton b4;

private JButton b5;

private JButton b6;

JPanel j;

Image img = null;

public static void main(String[] args) {

    frame frame = new frame("Hallo");

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setLayout(new BorderLayout());

    try {

        frame.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new 

File("C:/Users/xyz/Downloads/234.jpg")))));

    } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

    }

    frame.setLayout(new BorderLayout());

    frame.setSize(1241, 795);

    frame.setLayout(null);

    frame.setVisible(true);

    frame.setResizable(false);

}
public frame (String title){

    super(title);

    b1 = new JButton("");

    b1.setBounds(0, 100, 140, 40);

    add(b1);
    
    b3 = new JButton("");

    b3.setBounds(0, 140, 140, 40);

    add(b3);
    
    b4 = new JButton("");

    b4.setBounds(0, 180, 140, 40);

    add(b4);
    
    b5 = new JButton("");

    b5.setBounds(0, 220, 140, 40);

    add(b5);
    
    b6 = new JButton("");

    b6.setBounds(0, 260, 140, 40);

    add(b6);
    
}

}

wird nur das Bild angezeigt... Wäre nett, könnte jmd. mir helfen. LG

Antwort
von PerfectMuffin, 19

Lass das Bild zeichnen, anstatt es per Component einzufügen, den Components sind nicht dazu gedacht einander zu überlappen...obwohl es so auch gehen sollte.

Keine passende Antwort gefunden?

Fragen Sie die Community