Bonjour,
Je veux inserer une image dans un JFrame Comment faire
Merci d'avance pour votre aide.Code:
1
2
3 this.setTitle("Tp POO : Gestion de Compte Bancaires"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(680,320);
Version imprimable
Bonjour,
Je veux inserer une image dans un JFrame Comment faire
Merci d'avance pour votre aide.Code:
1
2
3 this.setTitle("Tp POO : Gestion de Compte Bancaires"); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(680,320);
Salut,
Insérer comment ? Tu parles de l'icône en haut à gauche ? Tu voudrais juste afficher une image à l'intérieur de la JFrame ? Ou afficher une image dans le fond et afficher d'autres composants au dessus ?
C'est pour afficher une image dans le fond et afficher d'autres composants au dessus .
- Il y a la méthode qui consiste à dessiner dans le fond d'un JPanel, qu'on mettrait dans la fenêtre, et dans lequel tu pourras ajouter des composants.
Pour ça, il faut redéfinir la méthode paintComponent() par exemple :
Cette méthode présente comme avantage qu'on peut dessiner l'image comme on veut dans le fond :Code:
1
2
3
4
5
6
7 protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage( image ,0, 0, null); }
- on peut faire qu'elle s'étende sur tout le panneau : g.drawImage( image ,0, 0, getWidth(), getHeight(), null);, mais bien sûr ça peut déformer l'image
- on pourra la centrer, ou s'arranger pour quelle s'étende de manière à respecter ses proportions, sans laisser de place pour du vide, ou l'agrandir de manière à ce qu'aucune partie ne soit coupée tout en maximisant
- on pourra utiliser des textures, déformations diverses, etc.
En revanche, il peut être complexe de gérer la transparence des composants à mettre au dessus : tu verras un exemple plus complet ici qui traite de cette problématique.- On peut également mettre l'image dans un JLabel et utiliser un OverlayLayout pour combiner l'image avec un formulaire classique Swing.
C'est beaucoup plus simple, mais plus contraignant : l'image ne pourra s'adapter aussi simplement que dans l'autre système, aux changements de taille la fenêtre (si la taille de la fenêtre est fixée, ça peut être beaucoup plus simple d'agrandir l'image dès le départ). On peut combiner toutefois les 2.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 JLabel label = new JLabel(new ImageIcon(chemindel'image)); Panel panel = new JPanel(); // on créé un panel panel.setLayout(new OverlayLayout(panel)); // on lui affecte le layout OverLayLayout JPanel form = new JPanel(); // on créé un JPanel pour les composants // on ajoute les composants qu'on veut au formulalire (ici par exemple 3 boutons) for(int i=0; i<3;i++) form.add(new JButton("button "+(i+1))); Il faut rendre le panel du formulaire transparent, pour voir l'image à travers form.setOpaque(false); panel.add(form); // on ajoute le formulaire panel.add(label); // on ajoute après le composant avec l'image (après pour qu'il soit affiché en dessus) frame.add(panel);// on ajoute le panneau au
merci beaucoup :)