Hintergrundbild an JFrame anpassen

Status
Nicht offen für weitere Antworten.

krafta

Neues Mitglied
Hallo Leute. Kannn mir jemand bitte sagen wie man ein Hintergrundbild an ein JFrame anpassen kann? Das Hintergrundbild ist B 3072 Pixel x H 2304 Pixel. Mein JFrame ist auf Vollbild gestreckt und ich möchte eben das sich das Hintergrundbild sich ebenfalls auf die Monitrogröße anpasst. Vielen Dank für die Antworten im Voraus!
Hier der Code:

Code:
import javax.swing.*;
import java.awt.event.*;

public class Entry
extends JFrame
{
  public Entry()
  {
    super("simply Organizer v 1.0");
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    JLabel label = new JLabel(new ImageIcon("Background.jpg"));
    JPanel panel = new JPanel();
    panel.add(label);
    this.getContentPane().add(panel);
    pack();

  }

  public static void main(String[] args)
  {
    Entry wnd = new Entry();
    wnd.setExtendedState(MAXIMIZED_BOTH); 
    wnd.setLocationRelativeTo(null); 
    wnd.setVisible(true);
    wnd.setResizable(true);
  }
}
 
krafta hat gesagt.:
Hallo Leute. Kannn mir jemand bitte sagen wie man ein Hintergrundbild an ein JFrame anpassen kann? ..
Code:
//package schnipsel3;
/*
 * Hintergrund.java
 */
import java.awt.*; 
import java.io.*; 
import javax.imageio.*; 
import javax.swing.*; 
public class Hintergrund extends JPanel  { 
    private Image image; 
    public Hintergrund() { 
        setPreferredSize(Toolkit.getDefaultToolkit().getScreenSize()); 
        try{ 
            image = ImageIO.read(new File("Background.jpg")); 
        } catch(IOException ex){ 
            System.out.println( ex.getMessage() ); 
        } 
        int w = getPreferredSize().width; 
        int h = getPreferredSize().height; 
        int wI = image.getWidth(null); 
        int hI = image.getHeight(null); 
        double f = (double)w/(double)h; 
        double fI = (double)wI/(double)hI; 
        if( f >= fI ) setScaledSize(-1,h); 
        else          setScaledSize(w, -1); 
    } 
    public void setScaledSize(int w, int h){ 
        image = image.getScaledInstance(w, h, Image.SCALE_SMOOTH); 
        repaint(); 
    } 
    public void paintComponent(Graphics g) { 
        super.paintComponent(g); 
        g.drawImage(image,0,0,null); 
    } 
}
 
Hallo André Uhres

Dies scheint genau das zu sein, was ich gesucht hab...
Leider fällt mir die Anwendung schwer, da ich noch ein ziemlicher Anfänger bin...

Kannste mir helfen?
Wie ruf ich Hintergrund auf bzw. binde es richtig ein.

Schon mal vielen Dank
Gruß
Tukuan
 
Code:
public class FrameMitHintergrund extends JFrame {
private Hintergrund hinterrgrund = new Hintergrund();
    public FrameMitHintergrund() {
        setSize(500,500);
        setContentPane(hintergrund);
        pack();
    }

    public static void main(String[] args) {
        new FrameMitHintergrund().setVisible(true);
    }
}
 
Tukuan hat gesagt.:
..Wie ruf ich Hintergrund auf bzw. binde es richtig ein..
Code:
//package schnipsel;
/*
 * HintergrundDemo.java
 */
import java.awt.*;
import javax.swing.*;
public class HintergrundDemo extends JFrame {
    public HintergrundDemo() {
        super("Hintergrund Demo");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setExtendedState(JFrame.MAXIMIZED_BOTH);
        hg = new Hintergrund();
        getContentPane().add(hg);
    }
    private Hintergrund hg;
    private JButton bt;
    public static void main(String args[]) {new HintergrundDemo().setVisible(true);}
}
 
mmmh irgendwie hab ich Probleme jetzt Buttons usw auf das Hintergrundbild zu legen.
Jemand nen Tip oder besser noch nen Beispiel?
 
Moin! Ich nutze die oben gepostete Hintergrund Klasse, was soweit auch klappt. Ich hab das Ding ein klein wenig verändert, sodass der Klasse im Konstruktor das Hintergrundbild übergeben wird, anstatt es in der Klasse zu laden.
Soweit sogut. Aus einem Applet werden beliebig viele Instanzen von einem JFrame aufgerufen. Mein Problem ist jetzt, dass beim Öffnen des ersten JFrames alles wunderbar klappt. Das Hintergrundbild wird angezeigt. Wenn ich aber dann ein zweites JFrame öffne, dann wird das Hintergrundbild nicht angezeigt. Erst wenn ich das JFrame vergrößere oder verkleinere, dann wird das Bild gezeichnet. Das Problem tritt wie gesagt, bei jedem JFrame auf, nur nicht beim ersten! (wobei es sich immer um das selbe Fenster handelt).
Code:
Hintergrund hintergrund = new Hintergrund(ImgHintergrund);
setContentPane(hintergrund);
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben