Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme graphique...

    26 avril 2008 à 16:05:46

    Bonjour,
    j'ai un probleme pour afficher un circuit en java...
    J'ai une matrice contenant des caracteres et je voudrais l'afficher, mon probleme est que des que je met la taille de la fenetre plus grande que 400x400 j'ai une fenetre vide ... voila mon code

    package pobj.simulateur.main;
    
    import java.io.IOException;
    
    import pobj.simulateur.graphique.FenetreCourse;
    import pobj.simulateur.terrain.LectureFichier;
    
    public class Race {
    
    	public static void main (String args[]){
    
    	try{
    		//ouverture du fichier dans une matrice de 768 sur 1024
    	LectureFichier fic = new LectureFichier("/home/benji/projet/map/map1.trk");
    	
    	FenetreCourse fen = new FenetreCourse(fic);
    	fen.setVisible(true);
    	}
    	
    	catch (IOException e){
    		System.out.println("erreur fichier");
    	}
    	
    	}
    }
    


    package pobj.simulateur.graphique;
    
    import javax.swing.*;
    
    import pobj.simulateur.terrain.LectureFichier;
    
    public class FenetreCourse extends JFrame { 
    	
    	private JPanel pan;
    	
    	public FenetreCourse(LectureFichier fic){
    		setTitle("Course");
    		//setSize(fic.getColonne(),fic.getLigne());
    		setSize(400,400);
    		pan=new PanneauCourse(fic);
    		getContentPane().add(pan);
    	
    	}
    
    
    }
    


    package pobj.simulateur.graphique;
    
    import java.awt.*;
    
    import javax.swing.JPanel;
    
    import pobj.simulateur.terrain.LectureFichier;
    
    public class PanneauCourse extends JPanel{
    
    	private LectureFichier fic;
    		
    	public PanneauCourse(LectureFichier fic){
    		this.fic=fic;
    	}
    	
    	public void paintComponent (Graphics g){
    		super.paintComponent(g);
    		
    		for(int i=0;i<fic.getLigne();i++){
    			for(int j=0;j<fic.getColonne();j++){
    				
    				switch (fic.getCharTab(i, j)) {
    				case 'g':g.setColor(Color.green);
    					System.out.println("vert");
    					break;
    				case '.':g.setColor(Color.black);
    					break;
    				case 'o':g.setColor(Color.gray);
    					break;
    				default:g.setColor(Color.green);
    					break;
    				}
    				g.drawRect(j,i,1,1);
    			}
    		}
    		
    		}
    }
    


    merci d'avance!
    • Partager sur Facebook
    • Partager sur Twitter
      26 avril 2008 à 17:54:07

      Salut, j'essaie de t'aider, mais je voudrais juste une précision, tu as une fenêtre vide lorsque tu changes la taille par défaut de la fenêtre, ou lorsque tu agrandis la fenêtre??
      • Partager sur Facebook
      • Partager sur Twitter
        26 avril 2008 à 20:54:58

        Si tu pouvais donner le code de ton projet ce serait cool
        • Partager sur Facebook
        • Partager sur Twitter
          27 avril 2008 à 2:56:16

          Pour la fenetre lorsque je met ma taille à 400x400 par defaut j'ai une partie de mon terrain qui s'affiche, et lorsque j'augmente ma taille dans le code il n'affiche plus rien...
          il ne rentre même pas dans le paintComponent... je ne comprend pas pourquoi...
          • Partager sur Facebook
          • Partager sur Twitter
            27 avril 2008 à 10:26:31

            Citation : yuurei

            Pour la fenetre lorsque je met ma taille à 400x400 par defaut j'ai une partie de mon terrain qui s'affiche, et lorsque j'augmente ma taille dans le code il n'affiche plus rien...
            il ne rentre même pas dans le paintComponent... je ne comprend pas pourquoi...



            public void paintComponents (Graphics g){
            • Partager sur Facebook
            • Partager sur Twitter
              27 avril 2008 à 11:33:34

              la méthode paintComponent(Graphics g) existe aussi...
              je vais voir comment fonctionne paintComponents
              • Partager sur Facebook
              • Partager sur Twitter
                27 avril 2008 à 12:22:41

                ce probleme est du au fait que ton image s'affiche une fois avant la fenetre (car tu la demandé ainsi) mais une fois une modification aportée a la fenetre elle ne s'affichera plus car tu ne la pas demandé.

                [edit] : désolé j'ai survolé le code et j'ai dit n'importe quoi. Bon je vais dormir a+.
                • Partager sur Facebook
                • Partager sur Twitter
                  27 avril 2008 à 14:02:17

                  ah bon?... je vois pas ... mais pourquoi alors quand ma taille est de 400x400 j'ai un bout de mon circuit qui s'affiche?... il ne devrait pas s'afficher si je ne lui demande pas...
                  je suis un peu perdu la!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 avril 2008 à 19:25:34

                    J'ai testé avec la partie du code que tu as donné et je n'ai pas de problèmes.

                    A mon avis tu as un problème dans ton for envoie donc le code.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    probleme graphique...

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown