Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dessiner dans un JPanel

Sujet résolu
    24 mai 2011 à 12:21:13

    Bonjour,

    Je suis en train de créer un logiciel qui permettra de tracer le projeté d'orbites de satellites sur le planisphere terrestre. J'en suis arrivé à la partie graphique et je cherche maintenant à afficher le planisphère.

    Je ne sais pas pourquoi, mais rien ne s'affiche. voici l'extrait du code qui est sensé gérer ca :

    public class Planisphere extends JPanel{
    public Planisphere() {
    		super();
    		this.setMinimumSize(new Dimension(100, 100));
    		this.setPreferredSize(new Dimension(100, 100));
    		
    		this.paintComponent(null);
    	}
    
    	public void paintComponent(Graphics g) { 
    		this.setBackground(Color.blue);
    		
    		BufferedImage image = null;
    		try {
    			image = ImageIO.read(new File("imgs/Terre.jpg"));
    		} catch (IOException e) {
    			e.printStackTrace();
    		} 
    		
    		Graphics g2 = image.getGraphics();
    		g2.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), null);
    		
    		this.paint(g2);
    	}
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2011 à 13:16:42

      this.paint(g2);
      
      Tu as essayé avec la méthode repaint() ? (ou repaint(g2) peut-être)
      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2011 à 13:51:59

        Premièrement, la ligne this.paintComponent(null); est inutile puisque la méthode est appelée automatiquement. Pour la rappeler, dans le cas ou tu modifie le modet, il faut appeler la méthode repaint(). Ainsi, l'appel à this.paint(g2); est inutile dans la méthode paintComponent
        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2011 à 14:36:39

          Merci pour vos réponses.

          Désormais, il n'affiche plus rien du tout... Je ne fait plus appel directement à paintComponent et j'utilise repaint() pour mettre à jour l'interface mais il ne me passe meme plus le background en blanc.
          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2011 à 14:47:00

            Voilà qui devrait fonctionner :

            public class Planisphere extends JPanel {
            
            	private BufferedImage img;
            	
            	public Planisphere() {
            		super();
            		this.setMinimumSize(new Dimension(100, 100));
            		this.setPreferredSize(new Dimension(100, 100));
            		
            		// chargement image
            		try {
            			this.img = ImageIO.read(new File("imgs/Terre.jpg"));
            		} catch(IOException e) {
            			e.printStackTrace();
            		}
            	}
            
            	public void paintComponent(Graphics g) {
            		super.paintComponent(g);
            		
            		// affichage background
            		g.setColor(Color.blue);
            		g.drawRect(0, 0, 100, 100);
            		
            		// affichage image
            		g.drawImage(img, 0, 0, img.getWidth(), img.getHeight(), null);
            	}
            }
            


            En plus des paint et des paintComponent appelés n'importe où, charger un fichier dans la méthode paintComponent est hyper lourd et donc à proscrire.
            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2011 à 14:59:33

              Ca marche niquel. merci !
              • Partager sur Facebook
              • Partager sur Twitter

              Dessiner dans un JPanel

              × 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