Partage
  • Partager sur Facebook
  • Partager sur Twitter

Changer Un Fond De Fenetre A L Aide D un Bouton

Merci A Vous De Vous Y Interresser ^^

    18 janvier 2015 à 20:19:24

    Bonjour a tous et merci d avoir lu mon sujet, ou plutot ma demande d aide.

    -J'ai creer une fenetre avec un fond (.jpg) et un bouton jouer.

    -lorsque je clique sur jouer j aimerai que le la fenetre change de fond (.jpg) et la est le probleme je n y parviens pas je ne sais pas comment mis     prendre. Pourriez-vous m'expliquer ou est mon erreur qui doit etre flagrande.

    voici mon code:

    public class Main  {

            public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                 FenetreDemarrage fen = new FenetreDemarrage();
               
                }
        }

    import javax.swing.JFrame;


    public class FenetreDemarrage extends JFrame  {
       
    public FenetreDemarrage(){

    this.setSize(300,465);
    this.setLocationRelativeTo(null);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    this.setResizable(false);
    this.setContentPane(new FondFenetreDemarrage());
    }
     
          }

    import java.awt.BorderLayout;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import java.io.File;
    import java.io.IOException;

    import javax.imageio.ImageIO;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class FondFenetreDemarrage extends JPanel implements ActionListener {
        public String mot;
        private JButton jouer;
        public JLabel affichage;
        private JPanel pano;
       
        public FondFenetreDemarrage(){
            pano = new JPanel(new BorderLayout(40,50));
            jouer = new JButton(("Jouer"));
            jouer.addActionListener((ActionListener) this);
           
            affichage = new JLabel();
            pano.add(jouer,BorderLayout.CENTER);
           
            add(pano);
            setVisible(true);
        }
               
               
      public void paintComponent(Graphics g){
        try {
          Image img = ImageIO.read(new File("menuDemarrer1.jpg"));
          g.drawImage(img, 0, 0, this);
          //Pour une image de fond
          //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
        } catch (IOException e) {
          e.printStackTrace();
        }               
      }


    @Override
    public void actionPerformed(ActionEvent e)  {
        // TODO Auto-generated method stub
        repaint();

        super.paintComponent(Graphics g){
            try {
              Image img = ImageIO.read(new File("menuDemarrer1.jpg"));
              g.drawImage(img, 0, 0, this);
              //Pour une image de fond
              //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
            } catch (IOException e1) {
              e1.printStackTrace();
            }               
          }
    }
    }

    Voila, en esperant pouvoir me corriger et avancer, je vous remercie



    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2015 à 21:12:55

      Bonjour,

      uns sujet proche du tien: http://openclassrooms.com/forum/sujet/mettre-une-image-en-fond-d-un-jframe-80705

      Penses a utiliser les balises code pour mettre ton code ^^

      • Partager sur Facebook
      • Partager sur Twitter
        19 janvier 2015 à 5:30:05

        Je vais jeter un oeil de suite, merci.Desole pour le code
        • Partager sur Facebook
        • Partager sur Twitter
          23 janvier 2015 à 22:56:04

          J'ai bien regardé et étudié mon problème je ne parviens pas a le comprendre

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            23 janvier 2015 à 23:16:02

            T'as juste a crée un bouton, un listener associé, et recharger ta nouvelle image. Tu fais un repaint() et voilà :)
            • Partager sur Facebook
            • Partager sur Twitter
              26 janvier 2015 à 14:52:45

              c'est ton code mis au propre parce que là je mis perd et je doit pas être le seul

               public class Main  {
                  public static void main(String[] args) {
                      FenetreDemarrage fen = new FenetreDemarrage();
                  }
              }
              import javax.swing.JFrame;
              
              public class FenetreDemarrage extends JFrame  {
                  public FenetreDemarrage(){
                      this.setSize(300,465);
                      this.setLocationRelativeTo(null);
                      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                      this.setVisible(true);
                      this.setResizable(false);
                      this.setContentPane(new FondFenetreDemarrage());
                  }
              }
              import java.awt.BorderLayout;
              import java.awt.Graphics;
              import java.awt.Image;
              import java.awt.event.ActionEvent;
              import java.awt.event.ActionListener;
              import java.io.File;
              import java.io.IOException;
              import javax.imageio.ImageIO;
              import javax.swing.JButton;
              import javax.swing.JLabel;
              import javax.swing.JPanel;
              
              public class FondFenetreDemarrage extends JPanel implements ActionListener {
                  public String mot;
                  private JButton jouer;
                  public JLabel affichage;
                  private JPanel pano;
                  public FondFenetreDemarrage(){
                      pano = new JPanel(new BorderLayout(40,50));
                      jouer = new JButton(("Jouer"));
                      jouer.addActionListener((ActionListener) this);
                      affichage = new JLabel();
                      pano.add(jouer,BorderLayout.CENTER);
                      add(pano);
                      setVisible(true);
                  }
              }
              public void paintComponent(Graphics g){
                  try {
                    Image img = ImageIO.read(new File("menuDemarrer1.jpg"));
                    g.drawImage(img, 0, 0, this);
                    //Pour une image de fond
                    //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
                  } catch (IOException e) {
                    e.printStackTrace();
                  }               
              }
              @Override
              public void actionPerformed(ActionEvent e)  {
              
                  repaint();
              
                  super.paintComponent(Graphics g){
                      try {
                        Image img = ImageIO.read(new File("menuDemarrer1.jpg"));
                        g.drawImage(img, 0, 0, this);
                        //Pour une image de fond
                        //g.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
                      } catch (IOException e1) {
                        e1.printStackTrace();
                      }               
                  }
              }
              

               n'oublie pas l'import du paintComponent dans FenetreDemarrage

              -
              Edité par GuillaumeBo1 26 janvier 2015 à 17:24:04

              • Partager sur Facebook
              • Partager sur Twitter
              Un homme azerty en vaut deux.
                26 janvier 2015 à 17:19:40

                alors déjà dans le actionPerfomed pourquoi répéter un code fait plutôt ça :

                dans FenetreDemarrage :

                import javax.swing.JFrame;
                 
                public class FenetreDemarrage extends JFrame  {
                
                    private JPanel nouveauFond = new FondFenetreDemarrage("menuDemarrer1.jpg");
                
                    public FenetreDemarrage(){
                        this.setSize(300,465);
                        this.setLocationRelativeTo(null);
                        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                        this.setVisible(true);
                        this.setResizable(false);
                        this.setContentPane(nouveauFond);
                    }
                }

                Dans une classe à part tu met le paintComponent avec un créateur:

                import java.awt.Graphics;
                import java.awt.Image;
                
                import javax.swing.JPanel;
                
                class paintComponent extends JPanel {
                    Image eau;
                
                    public paintComponent(String s) {
                        eau = getToolkit().getImage(s);
                    }
                    
                    public void paintComponent(Graphics g) {
                //      récupération de l'image
                        super.paintComponent(g);
                		
                //      adaptation de l'image à la taille du frame
                        g.drawImage(eau, 0, 0, getWidth(), getHeight(), this);
                    }
                }

                et pour actionPerformed :

                @Override
                public void actionPerformed(ActionEvent e)  {
                    nouveauFond = new FondFenetreDemarrage("NOUVELLE_IMAGE.JPG");
                    repaint();   
                }


                -
                Edité par GuillaumeBo1 26 janvier 2015 à 17:21:56

                • Partager sur Facebook
                • Partager sur Twitter
                Un homme azerty en vaut deux.

                Changer Un Fond De Fenetre A L Aide D un Bouton

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown