IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

JAR compiler les images avec mon projet


Sujet :

Java

  1. #1
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut JAR compiler les images avec mon projet
    Bonjour,

    Débutant en JAVA je réalise en guise de tuto un jeu de mémory ...
    Je développe sous Eclipse ...

    Le truc c'est que j'ai des JButton avec des ImagesIcon et ça marche impec dans le visualisateur Eclispe mais quand je fais un .jar ... Je n'ai pas d'images.

    Comment exporter mes images avec le projet ?

    J'ai essayer de les lier ... Bof Pas mieux

    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par hisy
    Bonjour,

    Débutant en JAVA je réalise en guise de tuto un jeu de mémory ...
    Je développe sous Eclipse ...

    Le truc c'est que j'ai des JButton avec des ImagesIcon et ça marche impec dans le visualisateur Eclispe mais quand je fais un .jar ... Je n'ai pas d'images.

    Comment exporter mes images avec le projet ?

    J'ai essayer de les lier ... Bof Pas mieux

    Merci pour votre aide.
    Juste comme ça : tu crées comment tes images dans le programme, car depuis un jar ce n'est pas la même chose.

  3. #3
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Alors ...

    Je fais un clic droit sur le projet ...
    Nouveau / Fichier / ...

    Je choisis mon fichier ...

    Je clique sur options avancées et je cocher Lier le fichier ...

    C surement pas bon mais je sais comment faire autrement ...

    D'ou mon POST ..

  4. #4
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par hisy
    Alors ...

    Je fais un clic droit sur le projet ...
    Nouveau / Fichier / ...

    Je choisis mon fichier ...

    Je clique sur options avancées et je cocher Lier le fichier ...

    C surement pas bon mais je sais comment faire autrement ...

    D'ou mon POST ..
    C'est pas ça que je demande... Dans le programme, comment est-ce que tu mets une icone sur ton bouton ?

    Les images sont dans les dossiers sur le disque dur ou alors dans les dossiers avec les sources donc dans le jar ?

  5. #5
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Sorry ...

    Voila le code de création de mes boutons qui sont en fait mes cartes ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    for (; j<niveau ; j++){
            	carte=new JButton();
            	carte.setIcon(new ImageIcon("./Memory/canceld.GIF"));
        	carte.setToolTipText("Cliquer pour retourner");
            	carte.setPreferredSize(new Dimension(100,100));
                carte.addMouseListener(ml);
    	container.add(carte);
            }
    Et voila tout mon code ...
    On se moque pas ...
    Pour la petite histoire, au début je mettais des caractères en rouge à la place des images sur mes boutons et je faisais varier le fond de rouge à bleu pour afficher ou non mes cartes ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
     
    package Memory;
     
     
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.GridLayout;
    import java.awt.Image;
    import java.awt.RenderingHints;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.image.BufferedImage;
    import java.util.*;
     
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
     
     
    public class ManipulateurMemory  extends JFrame implements ActionListener{
    	private JPanel container = null;//Déclaration de l’objet JPanel
        private GridLayout layout = null ;//Déclaration de notre layout
        private JButton carte;
        private int cptTotal=0;
        private int cptOK=0;
        private int niveau;
    	private JButton choix1;
    	private JButton choix2;
    	private String image1;
    	private String image2;
    	private static final long serialVersionUID = 3197803547703644275L;
    	private int passage = 0;
    	public  ManipulateurMemory(){
    		super();
    		this.niveau=36;
    		build(this.niveau);
     
    	}
     
     
     
    	// Je construit ma fenêtre
    	private void build(int niveau){ // Je crée une fenêtre vide
    		this.setContentPane(getContainer(niveau));
    		this.setTitle("Memory"); //On donne un titre à l’application
    		this.setSize(600,600); //On donne une taille à notre fenêtre
    		this.setLocationRelativeTo(null); //On centre la fenêtre sur l’écran
    		this.setResizable(false) ; //On interdit la redimensionnement de la fenêtre
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l’application de se fermer lors du clic sur la croix
    		setJMenuBar(new JMenuBar());
    		getJMenuBar().add(new JMenu("Niveau"));
            getJMenuBar().getMenu(0).add(new JMenuItem("Bambin"));
            getJMenuBar().getMenu(0).getItem(0).addActionListener(new item_click());
            getJMenuBar().getMenu(0).add(new JMenuItem("Stagiaire"));
            getJMenuBar().getMenu(0).getItem(1).addActionListener(new item_click());
            getJMenuBar().getMenu(0).add(new JMenuItem("Expert"));
            getJMenuBar().getMenu(0).getItem(2).addActionListener(new item_click());
            getJMenuBar().getMenu(0).add(new JMenuItem("Master"));
            getJMenuBar().getMenu(0).getItem(3).addActionListener(new item_click()); 
            getJMenuBar().getMenu(0).add(new JMenuItem("Guigui"));
            getJMenuBar().getMenu(0).getItem(4).addActionListener(new item_click());         
            pack();
    	}
     
    	private void rebuild(int niveau){ // Je recrée une fenêtre vide
    		cptOK=0;
    		cptTotal=0;
    		this.getContentPane().remove(this.container);
    		this.setContentPane(getContainer(niveau));
    		pack();
    	}
     
        class item_click implements ActionListener
        {
            public void actionPerformed(ActionEvent e)
            {       	
                if(e.getActionCommand().equals("Bambin")){
                	niveau=16;
                	rebuild(16);
                }
                if(e.getActionCommand().equals("Stagiaire")){
                	niveau=36;
                	rebuild(36);
                }
                if(e.getActionCommand().equals("Expert")){
                	niveau=64;
                	rebuild(64);
                }    
                if(e.getActionCommand().equals("Master")){
                	niveau=100;
                	rebuild(100);
                } 
            	if(e.getActionCommand().equals("Guigui")){
            		JOptionPane.showMessageDialog(null,"Réservé à un cerveau Guillaumien !!!","ATTENTION",JOptionPane.NO_OPTION);
                	niveau=4;
                	rebuild(4);
                }             
            }
        }
    	private JPanel getContainer(int niveau){
    		layout =  new GridLayout((int)Math.sqrt(niveau),(int)Math.sqrt(niveau));
    		container = new JPanel(); //On crée notre objet
    		container.setLayout(layout); //On applique le layout
    	// Je crée un premier tableau contenant toutes mes images:		
    		String  listeImage[]=new String [niveau];
    		int ii=0;
    		for(int i=0; i< niveau ;i+=2){
    			char c = (char)(ii + 65);
    			listeImage[i]=listeImage[i+1]= c+"";
    			ii++;
    		}
    		Random rand1= new Random();
    		int max = rand1.nextInt(100)+20;
    		for(int jj=0;jj<max;jj++){
    			int alea1=rand1.nextInt(niveau);
    			int alea2=rand1.nextInt(niveau);
    			String str=listeImage[alea1];
    			listeImage[alea1]=listeImage[alea2];
    			listeImage[alea2]=str;
    		}
     
     
            int j =0; 
            for (; j<niveau ; j++){
            	carte=new JButton(listeImage[j]);
            	carte.setIcon(new ImageIcon("./Memory/canceld.GIF"));
            	//this.toSquareButton(carte);
        		carte.setToolTipText("Cliquer pour retourner");
            	carte.setPreferredSize(new Dimension(100,100));
                carte.setFont(new Font("Tahoma", Font.BOLD, 1));
                carte.setBackground(Color.red);
                carte.setForeground(Color.red);
                carte.addMouseListener(ml);
                //carte.addActionListener(this);
    			container.add(carte);
            }		
     
    		return container ;
    	}
     
    	MouseListener ml = new MouseListener() {  
    		public void mousePressed(MouseEvent e) {
    			if(passage==0 & cptTotal!=0){
    				choix1.setIcon(new ImageIcon("./Memory/canceld.GIF"));
    				choix2.setIcon(new ImageIcon("./Memory/canceld.GIF"));
    			}
    			passage++;
    			if(passage==1){
    				choix1 = (JButton)e.getSource();
    				choix1.setBackground(Color.blue);
    				image1 = choix1.getText();
    				//Image jeton_bleu_src  = Image.createImage("./Memory/canceld.GIF"); 
    				//icone.getSource("./Memory/"+image1+".GIF");
    	        	ImageIcon icon = new ImageIcon("./Memory/"+image1+".GIF");
    	        	toSquareButton(choix1);
    	    		choix1.setIcon(icon);
    				System.out.println((int)image1.toCharArray()[0]);
    			}
    			else if(passage==2){
    				choix2 = (JButton)e.getSource();
    				if(choix2.getBackground()!=Color.blue){
    					passage=0;
    					choix2.setBackground(Color.blue);
    					image2 = choix2.getText();
    		        	ImageIcon icon = new ImageIcon("./Memory/"+image2+".GIF");
    		        	toSquareButton(choix2);
    		        	choix2.setIcon(icon);
    		        	if(image1.compareTo(image2)!=0){//image1!=image2){
    						choix1.setBackground(Color.red);
    						choix2.setBackground(Color.red);	
    					}
    					else {
    						choix1.setVisible(false);
    						choix2.setVisible(false);
    						choix1.setBackground(Color.yellow);
    						choix2.setBackground(Color.yellow);
    						cptOK++;
    					}
    					cptTotal++;
    				}
    				else {
    					passage=1;
    				}
    				if(cptOK==(niveau/2)) {
    					JOptionPane.showMessageDialog(null,"Nombre de coups : "+cptTotal,"BRAVO",JOptionPane.NO_OPTION);
    					rebuild(niveau);
    				}
     
    			}		
     
    		}
     
    		public void mouseClicked(MouseEvent e) {
     
    		}
     
    		public void mouseEntered(MouseEvent e) {
    			// TODO Raccord de méthode auto-généré
     
    		}
     
    		public void mouseExited(MouseEvent e) {
     
    		}
     
    		public void mouseReleased(MouseEvent e) {
     
    		}
    	} ; // MouseListener
     
    	public void actionPerformed(ActionEvent e) {
     
    	}
    	public void toSquareButton(JButton button)
    	{
    	 Dimension size = button.getMinimumSize();
    	 size.width = size.height;
    	 button.setMinimumSize(size);
    	 button.setPreferredSize(size);
    	}
    }

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu dois utiliser le ClassLoader pour charger l'image comme une ressource et non pas comme un fichier...

    Plus d'info dans la FAQ : Comment accéder à une image ?

    a++

  7. #7
    Membre averti Avatar de hisy
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    377
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 377
    Points : 353
    Points
    353
    Par défaut
    Ca marche ...

    Merci ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for (; j<niveau ; j++){
            	carte=new JButton();
            	java.net.URL url = getClass().getResource("canceld.GIF");
            	/** Accès au toolkit : */
            	java.awt.Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
            	Image image = toolkit.getImage(url);
            	carte.setIcon(new ImageIcon(image));
            	//this.toSquareButton(carte);
        	carte.setToolTipText("Cliquer pour retourner");
            	carte.setPreferredSize(new Dimension(100,100));
                carte.addMouseListener(ml);
    			container.add(carte);
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Compiler] Ne pas compiler les images de mon application
    Par molatorche dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/06/2012, 20h49
  2. Réponses: 3
    Dernier message: 06/07/2011, 14h55
  3. Réponses: 2
    Dernier message: 24/03/2010, 18h47
  4. [FLASH MX2004] Les images avec fond transparent
    Par Garra dans le forum Flash
    Réponses: 5
    Dernier message: 24/03/2006, 18h19
  5. Ne pas rafraichir les images avec PHP
    Par tornaod dans le forum Langage
    Réponses: 4
    Dernier message: 07/12/2005, 22h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo