Téléchargement
illégal
Posez votre question Signaler

Java : je n'arrive pas a charger les images [Résolu]

Cemninho - Dernière réponse le 28 mars 2008 à 14:10
Bonjour je suis étudiant et je travaille sur un jeu d'échec. Je suis encore débutant, et j'aimerais savoir comment je pourrais charger des images de pieces pour mon code ci-dessous. merci
import java.awt.*;
import java.awt.Image;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.ButtonGroup;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
import javax.swing.ImageIcon;

import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JFrame;
import javax.swing.JButton;

/* MenuLookDemo.java is a 1.4 application that requires images/middle.gif. */

/*
 * This class exists solely to show you what menus look like.
 * It has no menu-related event handling.
 */
class pion{
  Image img;
  
}
public class Chess {
    JTextArea output;
    JScrollPane scrollPane;


    public JMenuBar createMenuBar() {
        JMenuBar menuBar;
        JMenu menu, submenu;
        JMenuItem menuItem;
        JRadioButtonMenuItem rbMenuItem;
        JCheckBoxMenuItem cbMenuItem;

        //Create the menu bar.
        menuBar = new JMenuBar();

        //Build the first menu.
        menu = new JMenu("Game");
        menu.setMnemonic(KeyEvent.VK_A);
        menu.getAccessibleContext().setAccessibleDescription(
                "The only menu in this program that has menu items");
        menuBar.add(menu);
             ImageIcon icon = createImageIcon("images/nba.gif");
        menuItem = new JMenuItem("Nouveau jeu", icon);
        //menuItem.setMnemonic(KeyEvent.VK_T); //used constructor instead
        menuItem.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_1, ActionEvent.ALT_MASK));
        menuItem.getAccessibleContext().setAccessibleDescription(
                "Recommencer une partie");
        menu.add(menuItem);

         menu.addSeparator();
        submenu = new JMenu("A submenu");
        submenu.setMnemonic(KeyEvent.VK_S);

        menuItem = new JMenuItem("An item in the submenu");
        menuItem.setAccelerator(KeyStroke.getKeyStroke(
                KeyEvent.VK_2, ActionEvent.ALT_MASK));
        submenu.add(menuItem);

        menuItem = new JMenuItem("Another item");
        submenu.add(menuItem);
        menu.add(submenu);

        //Build second menu in the menu bar.
        menu = new JMenu("Another Menu");
        menu.setMnemonic(KeyEvent.VK_N);
        menu.getAccessibleContext().setAccessibleDescription(
                "This menu does nothing");
        menuBar.add(menu);

        return menuBar;
    } 

    public Container createContentPane() {
        //Create the content-pane-to-be.
       JPanel contentPane = new JPanel(new BorderLayout());
       contentPane.setOpaque(true);
                 JPanel btns[] = new JPanel[64]; 
            JPanel board = new JPanel();
       board.setLayout(new GridLayout(8,8)); 
            int ii = 0; 
        for(int i = 0; i < btns.length; i++) 
        { 
        if(i % 8 == 0)ii++; 
        btns[i] = new JPanel(); 
        btns[i].setBackground(ii % 2 == 1? Color.WHITE:Color.BLACK); 
        btns[i].setPreferredSize(new Dimension(80,80)); 
        board.add(btns[i]); 
        ii++;
        }
      
        contentPane.add(board, BorderLayout.CENTER);

        return contentPane;
    }

    /** Returns an ImageIcon, or null if the path was invalid. */
    protected static ImageIcon createImageIcon(String path) {
        java.net.URL imgURL = Chess.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }

    private static void createAndShowGUI(){
        //Make sure we have nice window decorations.
        JFrame.setDefaultLookAndFeelDecorated(true);

        //Create and set up the window.
        JFrame frame = new JFrame("Chess STPI v.1.0");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Create and set up the content pane.
        Chess demo = new Chess();

        frame.setContentPane(demo.createContentPane());
             frame.setJMenuBar(demo.createMenuBar());
        frame.getContentPane();



        //Display the window.
        frame.setSize(800, 600);
        frame.setVisible(true);
    }
    public static void main(String[] args) {
          javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });

    }
}
Lire la suite 

Java : je n'arrive pas a charger les images »

10 réponses
Réponse
+2
moins plus
tu as essayé tout simplement de remplacer ton code
if(i % 8 == 0)ii++; 
        btns[i] = new JPanel(); 
        btns[i].setBackground(ii % 2 == 1? Color.WHITE:Color.BLACK); 
        btns[i].setPreferredSize(new Dimension(80,80)); 
        board.add(btns[i]); 
        ii++;
        }

par :
if(i % 8 == 0)ii++; 
        btns[i] = new JPanel(); 
        final Icon Img[i] = new ImageIcon("");
        btns[i].add(Img[i]);
        btns[i].setBackground(ii % 2 == 1? Color.WHITE:Color.BLACK); 
        btns[i].setPreferredSize(new Dimension(80,80)); 
        board.add(btns[i]); 
        ii++;
        }
Ajouter un commentaire
Réponse
+1
moins plus
Pour charger une image :
JLabel mon_image = new JLabel(new ImageIcon("./mon_fichier_image.extension"));
Ajouter un commentaire
Réponse
+1
moins plus
Merci kij_82 ta méthode a fonctionné, c'est cool de m'avoir aidé ! jremercie aussi ceux qui ont essayé ! Si G encore un soucis jreviendrai poser la question ! bye
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour, j'ai à peu près le même problème, mais le chemin de mon image est un chemin absolu (C:/ ...) et cela ne fonctionne pas...
Comment puis-je faire pour que cela fonctionne?

Merci d'avance
supfred- 3 juin 2007 à 20:09
et si tu mets l'image directement dans ton projet je pense que tu pourras te contenter de son nom sinon si je me rappel bien considére ton projet comme le debut du chemin tu n'aurs plus qu'a indiquer les dossiers et sous dossier dans lesquel se trouve ton image .
ex dans mon prjet j'ai créé un dossier Image qui contiend mes image j'inscrirai alors Image/monimage.gif

As tu compris?
miniki - 27 mars 2008 à 22:25
JLabel mon_image = new JLabel(new ImageIcon("Images/Volant.JPEG"));

comme tu le dis, dans ton message, mais le dossier Images doit se trouver dans ton projet c'est a dire dans le dossier Src?
kij_82- 28 mars 2008 à 14:10
Qu'importe dans quel répertoire les images se situe tant que ce répertoire est défini comme un répertoire source dans la configuration du projet (clic droit sur projet->Properties->Java Build Path->Onglet 'Sources'
Ajouter un commentaire
Réponse
+0
moins plus
excuse moi :
tu mets l'uRL de ton image dans ' new ImageIcon("");'
Ajouter un commentaire
Réponse
+0
moins plus
Stef désolé maist a méthode ne marche pas le compilateur me signale une erreur.
kij_82 ta solution fonctionne mais j'ais fais un essai : j'ai esayé d'ajouter la meme image sur toutes les cases pour voir si ça allé fonctionner (code ci dessous) mais jme suis rendu compte kil n'y a que la derniere case sur laquelle l'image s'affiche. Quelqu'un sait pourquoi ? merci
   public Container createContentPane() {
        //Create the content-pane-to-be.
       JPanel contentPane = new JPanel(new BorderLayout());
       JLabel img = new JLabel(new ImageIcon("./Images/0.gif")); 
       contentPane.setOpaque(true);
		 JPanel btns[] = new JPanel[64]; 
	    JPanel board = new JPanel();
       board.setLayout(new GridLayout(8,8)); 
	    int ii = 0; 
        for(int i = 0; i < btns.length; i++) 
        { 
        if(i % 8 == 0)ii++; 
        btns[i] = new JPanel(); 
        btns[i].setBackground(ii % 2 == 1? Color.WHITE:Color.BLACK); 
        btns[i].setPreferredSize(new Dimension(80,80)); 
        btns[i].add(img);
        board.add(btns[i]); 
        ii++;
        }
kij_82- 28 avril 2005 à 19:29
C'est normal, tu doit creer unnouvel objet à chaque fois car la tu ne fait que référencer le même objet pour toutes tes cases.
Remplace :
btns[i].add(img);

Par :
btns[i].add( new JLabel(new ImageIcon("./Images/0.gif")) );

Et tu enleve :
JLabel img = new JLabel(new ImageIcon("./Images/0.gif")); 


Si apres ca ca marche pas, ca vient de l'organisation de tes JPanel.

++
Ajouter un commentaire
Ce document intitulé « java : je n'arrive pas a charger les images » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?