Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Faire une grille de Jlabel dans une JFrame [ Multimédia / Java2D ] (ABF)

jeudi 15 mai 2008 à 18:16:05 | Faire une grille de Jlabel dans une JFrame

ABF

Bonjour,

Je voudrais :
0) demander de sélectionner une map
1) charger un fichier texte, le parser en fonction des | et remplir un tableau
2) generer une grille de Jlabel (qui seront mes images)
3) en fonction de mon tableau, associé au Jlabel les images correspondantes
4) tous les x millisecondes, faire une action (timer)

Ma form :
j'ai une form avec un Jpanel (Jpanel)
                   un Jbutton Quitter


Ci dessous ma classe complete
(err sur:  Container cont = getContentPane(); dans gestGrille)


import java.util.*;         //lecture + timer
import java.util.Timer;     //timer
import java.io.*;           //fichier
import java.lang.String;    //split

import java.awt.*;
import javax.swing.*;



/**
*
* @author  Brice
*/
public class Viewer extends javax.swing.JFrame {
    
    static Timer t;
    static String [][] tblMap; //tbl de la map 2 dimensions
    static JLabel[] tblGrille = new JLabel[450];
    

    /** Creates new form Viewer */
    public Viewer() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        btnEnd = new javax.swing.JButton();
        jPanel = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Viewer");

        btnEnd.setText("QUITTER");
        btnEnd.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEndActionPerformed(evt);
            }
        });

        jPanel.setBackground(new java.awt.Color(204, 204, 204));

        javax.swing.GroupLayout jPanelLayout = new javax.swing.GroupLayout(jPanel);
        jPanel.setLayout(jPanelLayout);
        jPanelLayout.setHorizontalGroup(
            jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 557, Short.MAX_VALUE)
        );
        jPanelLayout.setVerticalGroup(
            jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 296, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap(876, Short.MAX_VALUE)
                .addComponent(btnEnd)
                .addContainerGap())
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(406, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 172, Short.MAX_VALUE)
                .addComponent(btnEnd)
                .addContainerGap())
        );

        getAccessibleContext().setAccessibleParent(jPanel);

        pack();
    }// </editor-fold>                        

private void btnEndActionPerformed(java.awt.event.ActionEvent evt) {                                      
    new Splash().setVisible(true);
    dispose();
}                                      

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Viewer().setVisible(true);
                
                //demande une map a charger
                    String temp="";
                    try
                    {
                        DataInputStream fichier;
                        fichier=new DataInputStream(new BufferedInputStream(new FileInputStream("chemin_du_fichier" )));
                        temp=fichier.readUTF();
                          
                        //fichier ouvert
                        //genere la grille
                        gestGrille gen= new gestGrille();
                        gen.generer();
                        
                        loadMap(temp);
                          
                        fichier.close();
                        
                        
                        //lance le jeu
                        t = new Timer();
                        t.schedule(new Jeu(), 0, 200);
                        
                    }
                    catch(Exception e)
                    {System.err.println("Message_erreur : " + e.getMessage() );
                    }
            }
        });
    }
    

    /*static class genGrille extends JPanel{
        private JLabel[] tbl = new JLabel[450];

        void generer()
        {
           // Auncun espacement entre les cases de la grille
           setLayout(new GridLayout(15,30,0,0));
            
           // Création et Ajout des images 450
           for (int  i=1 ; i<450 ; i++) {
                GridBagConstraints contraintes= new GridBagConstraints();

                contraintes.gridx = x;//la position par rapport a l axe des absciss
                contraintes.gridy = y;//la position vertical
                contraintes.gridwidth = largeur;
                contraintes.gridheight = hauteur;
                contraintes.fill = typeElargissement;
                contraintes.anchor = typePosition;
                contraintes.ipadx = etalementHorizontal;
                contraintes.ipady = etalementVertical;
              
              
              
                JLabel btn = new JLabel();
                btn.setText("");
                btn.setPreferredSize(new Dimension(30, 30));
                btn.setIcon(new javax.swing.ImageIcon(".\\img\\vide.jpg"));
                add(btn);
                btn.setVisible(true);
           }
        }
    }*/
    
    // OU BIEN
    
    static class gestGrille extends JPanel{

        private JPanel panel;
        
void generer()
{
            // création Jpanel
            Container cont = getContentPane();
            panel = new JPanel();
            cont.add(panel);
            
            // Le gestionnaire de mise en forme du Panel panel est redéfini
            // en grille de 15 lignes, 30 colonnes avec 0 pixels entre chaques
            panel.setLayout(new GridLayout(15,30,0,0));
            
            // Création des images 450 (15*30) et ajout au Panel panel
            for (int  i=1 ; i<450 ; i++)
            {
                GridBagConstraints contraintes= new GridBagConstraints();

     contraintes.gridx = 30*i;//la position par rapport a l axe des absciss
     contraintes.gridy = 15*i;//la position vertical
     contraintes.gridwidth = 900;
     contraintes.gridheight = 450;
     contraintes.fill = 1;//typeElargissement      |
     contraintes.anchor = 1;//typePosition         | PAS COMPRIS
     contraintes.ipadx = 1;//etalementHorizontal   |
     contraintes.ipady = 1;//etalementVertical     |
                
                JLabel btn = new JLabel();
                btn.setText("");
                btn.setPreferredSize(new Dimension(30, 30));
                btn.setIcon(new javax.swing.ImageIcon(".\\img\\vide.jpg"));
                add(btn);
                btn.setVisible(true);
                panel.add(btn);
            }
        }
        
        // Met une image sur le Jlabel choisit
        void attribImage(int numJlabel,String repImg)
        {tblGrille[numJlabel].setIcon(new javax.swing.ImageIcon(repImg));
        }
                
    }
    
    
    
    
    // CHARGER LE FICHIER
    // PARSE CHAQUE LIGNE
    // MET EN FORME LE TABLEAU de la MAP
    static void loadMap(String fic) throws FileNotFoundException{
        
        int ligne;      //ligne du tbl de la map
        int colonne;    //colonne du tbl de la map

        String filePath = fic;
        Scanner scanner=new Scanner(new File(filePath));  // ????
        
        // On boucle sur chaque champ detecté
        ligne = 0;
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            
            //ajout tableau
            String[] tblTmp = line.split("|",10);
            
            colonne = 0;
            for (int  i=0 ; i<tblTmp.length ; i++)
            {tblMap[ligne][colonne] = tblTmp[i];
             colonne = colonne +1;
            }
            
        ligne = ligne + 1; // on passe à la ligne suivante
        }
        scanner.close();
    }
    

    
    static class Jeu extends TimerTask {
        
        private int xTrain; // horizontale
        private int yTrain; // verticale
        
        private Icon imgTmp; //image temporaire sur laquelle on va aller
        
        // on actionne le train
        public void run(){
            
            
            // on regarde sur chacun des 4 case a cote
            if(xTrain>0){                           // si on est pas a gauche
                if (yTrain>0 && yTrain<30){         // si on est pas en bordure Haut Bas
                    if (tblMap[xTrain][yTrain] != ""){

                    }
                }else{
                    
                }
            }

        }
    }
                  

Merci

jeudi 15 mai 2008 à 18:16:53 | Re : Faire une grille de Jlabel dans une JFrame

ABF

POur le projet complet et pouvoir debugger avec la coloration syntaxique :

http://cbprogs.free.fr/GestionGare.zip

Merci de votre aide

jeudi 15 mai 2008 à 21:15:40 | Re : Faire une grille de Jlabel dans une JFrame

Ombitious_Developper

Salut:

"Diviser pour reigner".

Et si tu nous exposes tes problématiques une par une.

Qu'est ce que ne mache pas dans ton code?

jeudi 15 mai 2008 à 21:46:04 | Re : Faire une grille de Jlabel dans une JFrame

ABF

EN fait lorsque j'execute tous cela ca ne fonctionne pas

1) Charger un fichier et le splitter en fonction des | dans un tableau

import java.util.*;         //lecture
import java.io.*;           //fichier

========
CHARGER (je veux qu'à l'ouverture de ma form, une fenetre de dialogue s'ouvre et me demande de choisir un fichier .txt) se sera la map
========
DataInputStream fichier;
                        fichier=new DataInputStream(new BufferedInputStream(new FileInputStream("chemin_du_fichier" )));
                        temp=fichier.readUTF();



========
LIRE/SPLITTER
========
static void loadMap(String fic) throws FileNotFoundException{
        
        int ligne;      //ligne du tbl de la map
        int colonne;    //colonne du tbl de la map

        String filePath = fic;
        Scanner scanner=new Scanner(new File(filePath));  // ????
        
        // On boucle sur chaque champ detecté
        ligne = 0;
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            
            //ajout tableau
            String[] tblTmp = line.split("|",10);
            
            colonne = 0;
            for (int  i=0 ; i<tblTmp.length ; i++)
            {tblMap[ligne][colonne] = tblTmp[i];
             colonne = colonne +1;
            }
            
        ligne = ligne + 1; // on passe à la ligne suivante
        }
        scanner.close();
    }

jeudi 15 mai 2008 à 21:49:39 | Re : Faire une grille de Jlabel dans une JFrame

ABF

2) Je veux générer une sorte de quadrillage dans ma form
   J'aimerais faire une grille de 30 de la large x 15 de haut (30x15 cases)
   Je veux représenter mes cases par des Jlabel (pour pouvoir y affecter une image)

   ==> CLASSE genGrille



   Par la suite, via un timer (voir code au dessus), je veux pouvoir changer l'image (Icon) d'une case

   ==> CLASSE JEu



Cette discussion est classé dans : java, jpanel, javax, swing, grouplayout


Répondre à ce message

Sujets en rapport avec ce message

Un ptit conseil/aide serait le bienvenue (Java graphique) [ par Al3x38 ] Bonjour tout le monde ;)Voila, dans le cadre d'un projet d'informatique, je dois réaliser un petit programme en java avec une interface agéable ! Alor Lien entre deux classe [ par Bouboukick ] Bonjour, je suis occupé de faire un programme sous NetBeans et j'ai 2 fichier l'un pour mon interface graphique l'autre pour me connecter à mon port c interface [ par gigi00 ] bonjour tout le monde j'ai besoin de votre aide j'ai  un projet de gestion de caisse a realise avec netbeans  , et je trouve un probleme au niveau la COMMUNICATION APPLET SERVLET avec dopsot( ) [ par Java2386 ] bonjour je vien de realisé une communication entre une servlet et une applet (JAPPLET with swing). j'ai fait (en principe ) les etapes necessaire, connexion à la base de donnée [ par diwa ] bonjour tous le monde ,j'ai ce programme qui permet d'etablir une connexion à la base de donnée excel,mais j'ai un problem ,il affiche les erreurs sui Affichage des resultats des requetes dans une formulaire [ par legrandmifi ] Bonjour a tout le monde Je viens de créer un formualaire avec l'assistance de netbaens.qui est compose des tableaux. et je veux executer mes requetes Swing java JFrame [ par rayhana1 ] je suis une débutante en java. J'ai un problème dans la réalisation d'une interface graphique, voici le : premièrement j'ai créé un fenêtre simple (JF class GroupLayout [ par bayan ] bonjour tous le monde ,j'ai un programme en java ,lors de la compilation il m'affiche:D:\NetBeans_projects\excelpj\src\pfe\testing.java:74: cannot res Remplir Combobox sous netbeans [ par Bouboukick ] Bonjour j'ai un code qui se connecte a mon port com et me fournit aussi tout les port disponible sur mon pc.Le souci est que j'aimerais pouvoir mettre Problème de gestion d'un Tableau jTable en java [ par beberto56 ] Bonjour,Voici une petite application test que j'ai créé afin de gérer un tableau en java. Cette application est composé d'une zone de saisie d'un tabl


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.