it-swarm.com.de

Hintergrundbilder in JFrame einstellen

Stehen Methoden zur Verfügung, um ein Bild in einer JFrame als Hintergrund festzulegen?

35
Shruthi

Es gibt keine integrierte Methode, aber es gibt mehrere Möglichkeiten, dies zu tun. Der einfachste Weg, an den ich im Moment denken kann, ist:

  1. Erstellen Sie eine Unterklasse von JComponent .
  2. Überschreiben Sie die Methode paintComponent(Graphics g) , um das anzuzeigende Bild zu malen.
  3. Setze den Inhaltsbereich der JFrame als Unterklasse.

Einige Beispielcodes:

class ImagePanel extends JComponent {
    private Image image;
    public ImagePanel(Image image) {
        this.image = image;
    }
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 0, 0, this);
    }
}

// elsewhere
BufferedImage myImage = ImageIO.read(...);
JFrame myJFrame = new JFrame("Image pane");
myJFrame.setContentPane(new ImagePanel(myImage));

Beachten Sie, dass dieser Code das Bild nicht an die JFrame-Größe anpasst, wenn Sie dies gewünscht haben.

37
Michael Myers

Versuche dies :

import Java.io.File;
import Java.io.IOException;

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


public class Test {

    public static void main(String[] args) {
        JFrame f = new JFrame();
        try {
            f.setContentPane(new JLabel(new ImageIcon(ImageIO.read(new File("test.jpg")))));
        } catch (IOException e) {
            e.printStackTrace();
        }
        f.pack();
        f.setVisible(true);
    }

}

Dies führt im Übrigen dazu, dass der Inhaltsbereich kein Container ist. Wenn Sie Dinge hinzufügen möchten, müssen Sie eine JPanel-Unterklasse unterteilen und die paintComponent-Methode überschreiben.

18

Sie können die Background Panel class verwenden. Es führt den benutzerdefinierten Anstrich wie oben beschrieben durch, bietet jedoch Optionen zum Anzeigen des Bildes in skalierter, gekachelter oder normaler Größe. Außerdem wird erläutert, wie Sie ein JLabel mit einem Bild als Inhaltsbereich für den Frame verwenden können.

6
camickr
import javax.swing.*;

import Java.awt.*;

import Java.awt.event.*;

class BackgroundImageJFrame extends JFrame
{

    JButton b1;
    JLabel l1;

    public BackgroundImageJFrame() {

        setSize(400,400);
        setVisible(true);

        setLayout(new BorderLayout());

        JLabel background=new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful_design.png"));

        add(background);

        background.setLayout(new FlowLayout());

        l1=new JLabel("Here is a button");
        b1=new JButton("I am a button");

        background.add(l1);
        background.add(b1);
    }

    public static void main(String args[]) 
    {
        new BackgroundImageJFrame();
    }
}

schauen Sie sich den Link unten an

http://Java-demos.blogspot.in/2012/09/setting-background-image-in-jframe.html

0
yugaanks