Einstellen von Hintergrundbildern in JFrame

Lesezeit: 2 Minuten

Gibt es Methoden, um ein Bild als Hintergrund in a JFrame?

Benutzer-Avatar
Michael myers

Es gibt keine integrierte Methode, aber es gibt mehrere Möglichkeiten, dies zu tun. Der einfachste Weg, der mir im Moment einfällt, ist:

  1. Erstellen Sie eine Unterklasse von JComponent.
  2. Überschreiben Sie die paintComponent(Graphics g) -Methode, um das Bild zu malen, das Sie anzeigen möchten.
  3. Stellen Sie den Inhaltsbereich ein des JFrame diese Unterklasse sein.

Etwas Beispielcode:

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 die Größenänderung des Bildes nicht anpasst JFramewenn du das wolltest.

  • Sie sollten die Methode super.paintComponents() für die Methode painComponent verwenden.

    – Sadschad

    3. Februar 2013 um 19:02 Uhr

Benutzer-Avatar
Savvas Dalkitsis

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 übrigens dazu, dass der Inhaltsbereich kein Container ist. Wenn Sie Dinge hinzufügen möchten, müssen Sie ein JPanel ableiten und die paintComponent-Methode überschreiben.

  • Tatsächlich erweitert JLabel (wie alle JComponents) Container. Ich frage mich, was passiert, wenn Sie etwas zu einem Etikett hinzufügen?

    – Michael myers

    30. Juni 2009 um 17:50 Uhr

  • eigentlich nichts… ich habe es gerade probiert. Sie können zum Beispiel eine JTextArea hinzufügen, aber sie zeichnet nicht.

    – Savvas Dalkitsis

    30. Juni 2009 um 17:55 Uhr

  • Es wird nichts angezeigt, da das Etikett ein Null-Layout hat. Legen Sie den Layout-Manager des Etiketts fest und Sie können ihm Komponenten hinzufügen. Beachten Sie jedoch, dass die Größe der Komponente immer noch durch die Größe des Bildes bestimmt wird, nicht durch die dem Etikett hinzugefügten Komponenten.

    – camickr

    29. August 2016 um 14:04 Uhr

Du kannst den … benutzen Hintergrund-Panel Klasse. Es führt das benutzerdefinierte Malen wie oben beschrieben aus, bietet Ihnen jedoch die Möglichkeit, das Bild skaliert, gekachelt oder in normaler Größe anzuzeigen. Außerdem wird erklärt, wie Sie ein JLabel mit einem Bild als Inhaltsbereich für den Rahmen verwenden können.

Benutzer-Avatar
Yugaanks

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();
    }
}

sehen Sie sich den untenstehenden Link an

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

1006700cookie-checkEinstellen von Hintergrundbildern in JFrame

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy