IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> visionneuse d'image sous java mais une image à la fois, les images .gif, .jpeg, peuvent-elles s'ajouter, se juxtaposer ?
Options
pilaau
posté 13 Apr 2014, 23:05
Message #1


Nouveau Membre


Groupe : Membres
Messages : 1
Inscrit : 13 Apr 2014
Membre no 190 100



Bonjour,

Je suis nouveau, c'est mon premier post.
Voici ci-après le code "CvisionneuseImages.java" d'un prog (il n'est pas de moi)

Code
[color="#FF8C00"][code]
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class CVisionneuseImages extends JFrame {
  static CVisionneuseImages m_fenetre;
  String m_nomFichier;               // Nom du fichier
  Image  m_imageAct;                 // Reference  l'image actuelle
  CCanvasImage m_affichageImage;     // JPanel pour afficher l'image
  int m_Xpos,m_Ypos;                 // Nouvelle position o˘ sera
                                     // affichÈ le coin supÈrieur
                                     // gauche de l'image
  int m_image_x1,m_image_y1;         // Delimitation actuelle
  int m_image_x2,m_image_y2;         // de l'image
  int m_hauteurImage,m_largeurImage; // Hauteur et largeur en pixels

  // Gestion des Èvenements
  class CMonEcouteurAction implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      String Label;

      Label = e.getActionCommand();

      if(Label.equals("Quitter le programme"))
         System.exit(0);

      if(Label.equals("Ouvrir image"))
         ouvrirImages();        
      }
    }

  // Creation d'un panneau (utilise pour l'affichage) et
  // d'une barre de menu dans le constructeur
  public CVisionneuseImages() {
    super();

    m_Xpos = m_Ypos = 20;       // Position de depart : en haut a gauche
    m_image_x1 = m_image_x2 = m_image_y1 = m_image_y2 = 0;

    // Pas d'image ouverte au demarrage
    m_nomFichier = null;
    m_imageAct = null;

    // Choix du gestionnaire de positionnement
    setLayout(new FlowLayout());

    // Derivation du canvas a partir de JPanel
    m_affichageImage  = new CCanvasImage();
    add(m_affichageImage);
  
    // Ajout d'une barre de menu a la fenetre
    JMenuBar barreMenu = new JMenuBar();
    setJMenuBar(barreMenu);

    // Creation des options du menu
    JMenu menu1 = new JMenu("Fichier");
    JMenuItem item1  = new JMenuItem("Ouvrir image");
    item1.addActionListener(new CMonEcouteurAction());

    JMenuItem item2 = new JMenuItem("Quitter le programme");
    item2.addActionListener(new CMonEcouteurAction());
    menu1.add(item1);
    menu1.add(item2);
    barreMenu.add(menu1);

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }

  // Ouverture d'un fichier image
  public void ouvrirImages(){
    FileDialog d = new FileDialog(this,"Ouvrir image...",
                                  FileDialog.LOAD);
    d.setVisible(true);
    m_nomFichier = d.getFile();


    // Si l'utilisateur ne selectionne
    // pas d'image, null est retourne.
    // Ne rien faire.
    if(m_nomFichier == null)
       return;

    // Ouverture de l'image
    ImageIcon tmp = new ImageIcon(m_nomFichier);
    m_imageAct = tmp.getImage();

    // Transmission des coordonnees de l'image
    m_largeurImage = m_imageAct.getWidth(m_affichageImage);
    m_hauteurImage = m_imageAct.getHeight(m_affichageImage);

    m_image_x1 = m_Xpos;
    m_image_y1 = m_Ypos;
    m_image_x2 = m_image_x1 + m_largeurImage;
    m_image_y2 = m_image_y1 + m_hauteurImage;

    m_affichageImage.repaint();
  }

  public static void main(String[] args) {
    m_fenetre = new CVisionneuseImages();
    m_fenetre.setSize(400,400);
    m_fenetre.pack();
    m_fenetre.setVisible(true);
  }


  // Cette classe sert a ouvrir et a manipuler les images
  class CCanvasImage extends JPanel {
    // Redessine le panneau
    public void paintComponent(Graphics g) {

      // Si une image est ouverte, l'afficher
      if(m_imageAct != null)
        g.drawImage(m_imageAct,m_Xpos,m_Ypos,this);
    }

    public Dimension getMinimumSize() {
      return m_fenetre.getSize();
    }
    public Dimension getPreferredSize() {
      return getMinimumSize();
    }
  }
}[/color]


Je m'initie à ce langage.
Le prog lancé me demande une image à ouvrir, elle doit être dans le même répertoire que le prog.
Ce qui se passe c'est que l'image étant affichée, je peux toujours utiliser le menu ouvrir une image, mais cette image remplacera la précédente.
Que dois-je faire pour compartimenter le panneau et que chaque nouvelle image se place à coté de la précédente ?

Merci, bien sûr,

Ce serait pour moi une manière de comprendre "comment gérer les panneaux", c'est pas évident dans la doc, me semble t'il !

Code
[color="#FF8C00"]
public void paintComponent(Graphics g)
[/color]

le paneau se redessine et je perds l'image d'avant!
Comment faire autrement

Pilaau
Go to the top of the page
 
+Quote Post
Jaypee
posté 16 Apr 2014, 14:59
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Je ne suis pas surpris que ce sujet suscite si peu d'attention.

L'approche que tu prends est un peu marginale :
- Tout faire en partant de zéro.
- En utilisant un exemple médiocre : Pas très bien structuré, ne respectant pas les conventions les plus élémentaires.

Peut-être que si tu expliquais ta motivation, tu attirerais davantage l'attention des habitués de ce forum.
- Es-tu débutant en programmation ?
- Es-tu débutant en Java ?

Qu'est-ce qui motive ton choix d'outils ? (Java, Swing, une appli qui ne tourne pas sur le Web...)

L'idée d'une meilleure approche pourrait être d'utiliser une plateforme de "client riche", qui a déjà beaucoup de fonctions, et où on ne fait qu'affiner certaines fonctions selon ses souhaits propres. Cet exemple vient directement de chez Oracle (le propriétaire de Java): http://download.oracle.com/otndocs/product...ex.html#SAMPLES

J'espère que ça ne t'impressionne pas toutes ces questions smile.gif

J-P

Ce message a été modifié par Jaypee - 16 Apr 2014, 16:00.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 28th March 2024 - 23:20