visionneuse d'image sous java mais une image à la fois, les images .gif, .jpeg, peuvent-elles s'ajouter, se juxtaposer ? |
Bienvenue invité ( Connexion | Inscription )
visionneuse d'image sous java mais une image à la fois, les images .gif, .jpeg, peuvent-elles s'ajouter, se juxtaposer ? |
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 |
|
|
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 J-P Ce message a été modifié par Jaypee - 16 Apr 2014, 16:00. |
|
|
Nous sommes le : 28th March 2024 - 23:20 |