Partage
  • Partager sur Facebook
  • Partager sur Twitter

Racine du projet

racine du projet

9 mars 2019 à 1:28:58

Bonjour à tous, 

je débute en java et je suis sur le chapitre "Interagir avec des boutons". J'ai un problème avec le code suivant: 

package projet3;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException; 
import javax.imageio.ImageIO;
import javax.swing.JButton;
  
public class Bouton extends JButton implements MouseListener{
  private String name;
  private Image img;

  public Bouton(String str){
    super(str);
    this.name = str;
    try {
      img = ImageIO.read(new File("fondBouton.png"));
    } catch (IOException e) {
      e.printStackTrace();
    }
  this.addMouseListener(this);
  }

  public void paintComponent(Graphics g){
    Graphics2D g2d = (Graphics2D)g;
    GradientPaint gp = new GradientPaint(0, 0, Color.blue, 0, 20, Color.cyan, true);
    g2d.setPaint(gp);
    g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
    g2d.setColor(Color.black);
    g2d.drawString(this.name, this.getWidth() / 2 - (this.getWidth() / 2 /4), (this.getHeight() / 2) + 5);
  }

  public void mouseClicked(MouseEvent event) {
    //Inutile d'utiliser cette méthode ici                      
  }

  public void mouseEntered(MouseEvent event) {
    //Nous changeons le fond de notre image pour le jaune lors du survol, avec le fichier fondBoutonHover.png
    try {
      img = ImageIO.read(new File("fondBoutonHover.png"));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public void mouseExited(MouseEvent event) {
  //Nous changeons le fond de notre image pour le vert lorsque nous quittons le bouton, avec le fichier fondBouton.png
    try {
      img = ImageIO.read(new File("fondBouton.png"));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  public void mousePressed(MouseEvent event) {
    //Nous changeons le fond de notre image pour le jaune lors du clic gauche, avec le fichier fondBoutonClic.png
    try {
      img = ImageIO.read(new File("fondBoutonClic.png"));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
 
  public void mouseReleased(MouseEvent event) {
    //Nous changeons le fond de notre image pour le orange lorsque nous relâchons le clic, avec le fichier fondBoutonHover.png
    try {
      img = ImageIO.read(new File("fondBoutonHover.png"));
    } catch (IOException e) {
      e.printStackTrace();
    }               
  }       
}

J'ai pourtant bien enregistré mes images dans le projet 3 comme le montre la figure suivant:

mais j'obtiens l'erreur suivante (il ne trouve pas l'image): 

si quelqu'un peut m'aider cela m'avancerait. Merci !!!

  • Partager sur Facebook
  • Partager sur Twitter
9 mars 2019 à 10:45:38

Bonjour,

Tu n'es pas le seul a avoir eu des problème avec ce chapitre parce qu'il n'est pas très clair. Moi même ça marchait pas au début...

En effet, il faut d'une part mettre tes images à la racine (dans ton cas c'est workspace\projet3 ) et corriger un oubli de l'auteur qui ne montre que bien plus tard que ce code :

private JButton bouton = new JButton("mon bouton");

doit être remplacer par celui-ci :

private Bouton bouton = new Bouton("mon bouton");




  • Partager sur Facebook
  • Partager sur Twitter
24 mars 2019 à 1:09:51

Merci beaucoup pour cette explication !!!!!!
  • Partager sur Facebook
  • Partager sur Twitter
27 novembre 2019 à 11:08:27

Bonjour,

Je clique sur le lien dans ce même chapitre pour télécharger les images (fondBouton.png, fondBoutonHover.png, fondBouton.png, fondBoutonClic.png et fondBoutonHover.png) mais je ne les trouve pas!!!

Merci

  • Partager sur Facebook
  • Partager sur Twitter
28 novembre 2019 à 13:20:36

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL