Bild ins Frame laden und Objekte drüber legen

ChrisB.

Mitglied
Guten Tag,
und zwar versuche ich gerade ein Frame zu haben, welches ein Bild als Hintergrund hat und darauf würde ich gerne Objekte setzen können, nur funktioniert das nicht so wie ich das will.
Und zwar wenn ich jetzt ein Objekt drüber lege, dann kann ich zum Beispiel nicht Koordinaten wählen, wo ich dieses Objekt gerne haben möche. Ich bekomme das auch mit diesen LayoutManagern nicht so hin.

Hier meine 2 Klassen:

Java:
import javax.swing.*;
import java.awt.event.*;
 
public class Ventilator extends JFrame 
{
  
  public Ventilator() 
  {
    initComponents();   
  }
  
  private void initComponents()
  {
    JFrame f = new JFrame("Ventilator");  
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.add(new PicturePanel());
    f.pack(); 
    f.setSize(354, 771);  
    f.setLocationRelativeTo(null);
    f.setVisible(true); 
  }
  
  
  
  /**
  * @param args
  */
  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        new Ventilator();
      }
    }); 
  }
}

Java:
import javax.swing.*;
import javax.imageio.*;
import java.awt.*;
import java.net.*;
import java.io.*;
 
public class PicturePanel extends JPanel { 
  private Image image, background;
  
  public PicturePanel() {
    super(new GridBagLayout());
    
    try {   
      background = ImageIO.read(getClass().getResource("background.png"));
    }
    catch(IllegalArgumentException iae) {
      JOptionPane.showMessageDialog(this, "Grafikdatei nicht gefunden!\n"+iae.getMessage()); 
      System.exit(-1);
    }
    catch(IOException ioe) {
      JOptionPane.showMessageDialog(this, "Fehler beim Einlesen einer Grafikdatei!\n"+ioe.getMessage());
      System.exit(-1);
    }
    
  }
  
  @Override
  protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    if(background != null) { 
      g.drawImage(background, 0, 0, this);
    }
  }
}

Ich hoffe ihr könnt mir hier helfen, wie ich mittels diesen LayoutManagern selbst bestimmen kann, wo die einzelnen Komponenten hinkommen.
 
Zuletzt bearbeitet:
Ich habe mir gerade deinen Code mindestens 5 mal rauf und runter angesehen, aber ich kann kein Element finden, das du darin darüber legen würdest. Wie hast du es denn versucht?

Lies dir mal das hier durch:

How to Use GridBagLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)

P.S.: Wenn du wirklich Koordinaten angeben möchtest, brauchst du "setLayoutManager(null)". Davon würde ich aber dringend abraten. Besser ist es, den bzw. die Layoutmanager zu verstehen und zu benutzen. BorderLayout und GridBagLayout sind die gängisten.
 

Zurück
Oben