J'ai réduit mes codes à une fonction aussi simple: montrer une image sur une fenêtre. Mais pourquoi l'image n'apparaît pas mais j'ai essayé? Je crée un JFrame, puis crée un JPanel qui devrait montrer l'image. Ensuite, ajoutez le panneau au cadre. Au fait, j'ai importé l'image et j'ai double-cliqué dessus pour obtenir l'URL.L'image n'apparaît pas sur la fenêtre
import java.awt.*;
import javax.swing.*;
import com.sun.prism.Graphics;
public class GUI {
JFrame frame=new JFrame("My game");
JPanel gamePanel=new JPanel();
public static void main(String[] args){
GUI gui=new GUI();
gui.go();
}
public void go(){
frame.setSize(300, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Background backPic=new Background();
backPic.setVisible(true);
frame.getContentPane().add(backPic);
JPanel contentPane=(JPanel) frame.getContentPane();
contentPane.setOpaque(false);
frame.setVisible(true);
}
class Background extends JPanel{
public void paintComponent(Graphics g){
ImageIcon backgroundIcon=new ImageIcon("file:///E:/eclipse/EL/backgroundPicture.jpg");
Image backgroundPic=backgroundIcon.getImage();
Graphics2D g2D=(Graphics2D) g;
g2D.drawImage(backgroundPic,0,0,this);
}
}
}
Ce qui signifie que vous fournissez une nouvelle méthode'paintComponent (com.sun.prism.Graphics) 'et ne surchargez pas paintComponent (java.awt.Graphics). –
@DavidGilbert * "Ce qui signifie que vous fournissez une nouvelle méthode" * Une raison pour laquelle '@ Override' devrait être spécifié sur n'importe quelle méthode substituée. Il est pratique d'obtenir des avertissements du compilateur que nous sommes sur la mauvaise voie, avant que le train de marchandises n'arrive .. –
Et cela signifie que je dois aussi importer l'image, non? Si je supprime l'image que j'ai importée, elle n'apparaît plus. Et quelle est la fonction de "super.paintComponent (g)"? – EstellaGu