Partage
  • Partager sur Facebook
  • Partager sur Twitter

Importer image sur IHM Java

    22 mai 2015 à 22:47:55

    Bonsoir,

    J'ai crée une ihm qui me permettra d'importer une photo "dessus" pour ensuite la bidouiller (là n'est pas ma question).

    Je voudrais donc savoir comment importer cette image en appuyant sur le menu déroulant du haut "Média" -> "Ouvrir un fichier" ?? 

    L'image de format bmp.

    Voici la classe fenêtre, qui contient le main : 

    import javax.swing.*;
    import javax.swing.JMenuBar;
    import javax.swing.JButton;
    import java.awt.*;
    import javax.swing.JPanel;
    
    import java.awt.Dimension;	// Pour définir une dimension d'élément graphique
    import java.awt.Color; //pour récuperer les couleurs
    import java.awt.Graphics;	// Pour manipuler un contexte de dessin
    import java.awt.image.BufferedImage;	// Pour contenir l'image lue d'un fichier
    import java.io.File;	// Pour manipuler un fichier
    import javax.imageio.ImageIO;	// Pour pouvoir lire une image
    import javax.swing.*;	// Pour manipuler tous les composants Swing
    
    /**
     *
     * @author mmontalant
     */
    public class Fenetre {
        public static void main(String[] args) {
            // Creation de la fenetre
            
            JFrame fenetre = new JFrame();
            fenetre.setTitle("Projet Maths-Java");
            
            JPanel pan = new JPanel();
            pan.setBackground(Color.BLACK);
            
            fenetre.setContentPane(pan);
            fenetre.setVisible(true);
            
            // Creation de la barre des menus
            JMenuBar menu_bar1 = new JMenuBar();
            
            // Creation des differents menus
            
            JMenu menu1 = new JMenu("Media");
            JMenu menu2 = new JMenu("Zoom");
            JMenu menu3 = new JMenu("Groupe");
            JMenu menu4 = new JMenu("Options");
            JMenu menu5 = new JMenu("Help?");
            
            // Differents Choix dans Chaque menu
            
            JMenuItem demarrer = new JMenuItem("Ouvrir un fichier");
            JMenuItem Zoom1 = new JMenuItem("Zoom +");
            JMenuItem Zoom2 = new JMenuItem("Zoom -");
            JMenuItem lecture = new JMenuItem("Qui sommes-nous ?");
            
            JMenuItem aider = new JMenuItem("Rubiques d'aides");
            JMenuItem play = new JMenuItem("Lecture/pause");
            JMenuItem avancer = new JMenuItem("Suivant");
            JMenuItem reculer = new JMenuItem("Precedant");
            JMenuItem augmenter = new JMenuItem("Augmenter le volume");
            JMenuItem diminuer = new JMenuItem("Diminuer le volume");
            JMenuItem repeter = new JMenuItem("Repeat");
            JMenuItem aleatoire = new JMenuItem("Lecture Aléatoire");
            JMenuItem couleur = new JMenuItem("Skins");
            JMenuItem information = new JMenuItem("A propos de...");
            JMenuItem arret = new JMenuItem("Stop");
            
            // Ajout de choix au menu
            menu1.add(demarrer);
            menu3.add(lecture);
            menu5.add(aider);
            menu2.add(Zoom1);
            menu2.add(Zoom2);
            menu4.add(couleur);
            menu5.add(information);
            
            // Ajout des menus sur la barre
            menu_bar1.add(menu1);
            menu_bar1.add(menu2);
            menu_bar1.add(menu3);
            menu_bar1.add(menu4);
            menu_bar1.add(menu5);
            
            // Ajout du menu sur la frame
            fenetre.setJMenuBar(menu_bar1);
            
            // Creation et Ajout d'un label
            JLabel label = new JLabel(" Options proposées : ");
            
            fenetre.getContentPane().add(label);
            
            // Creation des panels
            
            JPanel pbutton = new JPanel();
            pbutton.setLayout(new FlowLayout());
            JPanel plist = new JPanel();
            JPanel pvisibilite = new JPanel();
            pbutton.setBorder(BorderFactory.createLineBorder(Color.BLUE, 3));
            fenetre.add(pbutton);
            
            // Creation des buttons
            
            Bouton bzoom1 = new Bouton("Zoom +");
            pbutton.add(bzoom1);
            
            Bouton bzoom2 = new Bouton("Zoom -");
            pbutton.add(bzoom2);
    
            Bouton bstop = new Bouton("Quitter");
            pbutton.add(bstop);
            
            
            // Creation des JTable
            
            JTable Tlecture = new JTable();
            
            fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            fenetre.pack();
            // Visibilité de la fenetre
            fenetre.setVisible(true);
        }
        
    }


    et ma classe Bouton, qui gère les boutons "Zoom+", "Zoom -" et " Quitter" : 

    import java.awt.Color;
    import java.awt.FontMetrics;
    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("img.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, 50, Color.cyan, true);
            g2d.setPaint(gp);
            g2d.drawImage(img, 0, 0, this.getWidth(), this.getHeight(), this);
            g2d.setColor(Color.black);
            
            //Objet permettant de connaître les propriétés d'une police, dont la taille
            FontMetrics fm = g2d.getFontMetrics();
            //Hauteur de la police d'écriture
            int height = fm.getHeight();
            //Largeur totale de la chaîne passée en paramètre
            int width = fm.stringWidth(this.name);
            
            //On calcule alors la position du texte, et le tour est joué
            g2d.drawString(this.name, this.getWidth() / 2 - (width / 2), (this.getHeight() / 2) + (height / 4));
        }
        
        public void mouseClicked(MouseEvent event) {
            //Inutile d'utiliser cette méthode ici
        }
        
        public void mouseEntered(MouseEvent event) {}
        
        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("img.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("img4.png"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        public void mouseReleased(MouseEvent event) {
    }   
    }

    Merci :)

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2015 à 17:59:28

      Salut !

      Je t'invite à aller regarder du côté de JFileChooser.

      JFileChooser te permet d'ouvrir une fenêtre où tu vas pouvoir aller chercher ton fichier où tu le souhaites. Par contre tu devras sûrement faire des tests pour vérifier que le fichier sélectionné est bien du type que tu souhaites.

      Voilà ! Bon courage :D

      • Partager sur Facebook
      • Partager sur Twitter
      Auteur, Vidéaste et Développeur (Web, Logiciel et Jeux Vidéos)

      Importer image sur IHM Java

      × 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