Das hinzufügen eines hintergrund-Bild auf ein JPanel
Ich arbeite auf dem Bau ein Brettspiel in Java. Für das Spielbrett selbst war ich versucht, um das Bild von dem board, wie der hintergrund der gesamten JPanel, das füllt den JFrame. Ich fand einen Weg, dies zu tun, sondern nur mit der lokal gespeicherte Datei, die es braucht, um in der Lage sein, um das Bild aus dem Paket GUI ist innen.
package Gui;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
//Proof of concept for setting an image as background of JPanel
public class JBackgroundPanel extends JPanel {
private BufferedImage img;
public JBackgroundPanel() {
//load the background image
try {
img = ImageIO.read(new File(
"C:\\Users\\Matthew\\Desktop\\5x5 Grid.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
//paint the background image and scale it to fill the entire space
g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
}
}
Habe ich gelesen, dass mit ImageIcon ist eine gute Lösung, aber ich weiß nicht, wie Sie es richtig verwenden.
Bearbeiten 1 - ich fand meine Antwort hier
http://www.coderanch.com/how-to/java/BackgroundImageOnJPanel
Ich hatte auch das Bild formatiert falsch in meinen Arbeitsbereich. Vielen Dank für die Hilfe
Sie werden wollen suchen Sie diesen Ort wie diesem wurde eine Menge gefragt. wenn Sie schauen, um auf ein Bild zugreifen, die aus einer jar-Datei, dann werden Sie wollen, um es als Ressource, d.h.,
Hinweis: ImageIcon ist nicht eine "gute Lösung".
ImageIO.read(getClass().getResourceAsStream(resourcePath));
Den Ressourcen-Pfad wird relativ zu den class-Dateien.Hinweis: ImageIcon ist nicht eine "gute Lösung".
InformationsquelleAutor Matthew G | 2013-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
getClass().getResource("/path/to/resource")
zu erhaltenURL
Verweis auf die Ressource, die verwendet werden können, durchImageIO
zu Lesen, die RessourceSo, zum Beispiel, wenn das Bild befand sich in den /images-Ordner in Ihrem Glas, den Sie verwenden konnten,
Zum Beispiel...
Ja, die Räume machen mich scheu, wie gut
Die Räume waren in einem schlechten Kopie, der name der Datei ist 5x5 Grid.gif, 1 einzelnes Leerzeichen.
So, jetzt habe ich dein Beispiel img = ImageIO.read(getClass().getResource("/Bilder/5x5 Grid.jpg")); img wird ein URL-Typ aus, und die paintComponet Teil nicht nehmen, eine URL als argument
Nein,
ImageIO
dauertURL
(unter anderem) liest sich in der Bild ein gibt einBufferedImage
. Sie malen dasBufferedImage
InformationsquelleAutor MadProgrammer