Java : je n'arrive pas a charger les images
Résolu
Cemninho
-
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
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(); } }); } }
A voir également:
- Java : je n'arrive pas a charger les images
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
6 réponses
tu as essayé tout simplement de remplacer ton code
par :
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++; }
Pour charger une image :
JLabel mon_image = new JLabel(new ImageIcon("./mon_fichier_image.extension"));
JLabel mon_image = new JLabel(new ImageIcon("./mon_fichier_image.extension"));
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
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
Comment puis-je faire pour que cela fonctionne?
Merci d'avance
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?
ex dans mon prjet j'ai créé un dossier Image qui contiend mes image j'inscrirai alors Image/monimage.gif
As tu compris?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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++; }
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 :
Par :
Et tu enleve :
Si apres ca ca marche pas, ca vient de l'organisation de tes JPanel.
++
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.
++