Arriere plan
matt2421
Messages postés
17
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour, j'ai construis mon GUI et en dessous une surface ou mettre un arriere plan mais il n'apparait pas du tout. voici le code pour afficher l'image.
merci
try{
image = ImageIO.read(getClass().getResource("C:/Users/Ulrich/Desktop/Oc.jpeg"));
}catch(IOException ex){System.out.println("Background not loaded !!!");}
surface = new JPanel(){
@Override
protected void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(image, 0, 0, null); //zeichnet den Hintergrund auf "Surface"
}
};
surface.setBorder(BorderFactory.createTitledBorder("Surface"));
surface.setPreferredSize(new Dimension(width, depth));
BorderLayout layout = new BorderLayout();
setLayout(layout);
add(controlPanel, BorderLayout.NORTH);
add(surface, BorderLayout.CENTER);
setTitle(title);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
pack();
}
merci
A voir également:
- Arriere plan
- Arrière plan - Guide
- Youtube en arrière plan - Guide
- Arriere plan pc - Guide
- Arrière-plan messenger vidéo - Guide
- Paint supprimer arrière plan - Guide
1 réponse
(Re)Bonjour,
1) Il n'est pas nécessaire que surface soit un JPanel, tu peux te contenter d'un Component qui est plus haut dans la hierarchie des classes.
2) drawImage prends en dernier paramètre un ImageObserver, en effet l'image peut prendre du temps à charger, donc plutôt qu'attendre qu'elle soit prête on indique qui il faudra rappeler lorsqu'elle le sera, sinon elle ne s'affichera pas automatiquement.
3) pour le chargement de l'image je te conseilles d'utiliser Toolkit
4) le pack() doit être fait avant le setVisible(true) sinon la fenêtre peut clignoter car elle va être affichée avec sa taille par défaut avant d'être redimensionnée.
1) Il n'est pas nécessaire que surface soit un JPanel, tu peux te contenter d'un Component qui est plus haut dans la hierarchie des classes.
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
2) drawImage prends en dernier paramètre un ImageObserver, en effet l'image peut prendre du temps à charger, donc plutôt qu'attendre qu'elle soit prête on indique qui il faudra rappeler lorsqu'elle le sera, sinon elle ne s'affichera pas automatiquement.
3) pour le chargement de l'image je te conseilles d'utiliser Toolkit
4) le pack() doit être fait avant le setVisible(true) sinon la fenêtre peut clignoter car elle va être affichée avec sa taille par défaut avant d'être redimensionnée.
image = Toolkit.getDefaultToolkit().getImage(
getClass().getResource("C:/Users/Ulrich/Desktop/Oc.jpeg"));
surface = new Container() {
@Override
public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
});
private static void show(final Image image) { final JFrame frame = new JFrame(); frame.setSize(250, 300); frame.setContentPane(new Container() { private static final long serialVersionUID = 1; public void paint(Graphics g) { g.drawImage(image, 0, 0, frame); } }); frame.setLocationRelativeTo(null); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }