Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec public void paintComponent (Graphics g)

Sujet résolu
    27 décembre 2009 à 18:59:05

    Bonsoir à tous, voici mon problème :

    J'ai créé une classe qui hérite de l'objet JPanel, dans laquelle je dessine des rectangles en appellant la méthode "void paintComponent(Graphics g).

    Cependant, je n'attends pas le résultat attendu (à savoir 10 rectangles de tailles différentes). En effet, les rectangles sont identiques 2 à 2.
    Autres chose que je ne comprends pas, c'est que lorsque je fais un affichage du "i" de ma boucle "for", je me rends compte que la méthode est en réalité appelé non pas une seule fois comme je le croyais, mais 3 fois o_O

    Si quelqu'un veut bien m'expliquer pourquoi, je suis preneur !
    Merci d'avance pour votre aide !

    Le code de ma classe si ça peut servir :

    package vues;
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.FlowLayout;
    import java.awt.Graphics;
    import java.awt.event.MouseListener;
    import java.util.ArrayList;
    import javax.swing.JButton;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    import controleurs.ControleurJLabelCliquable;
    
    import modeles.ModeleStatistiquesGenres;
    
    public class VueStatistiquesGenresGraphe extends JPanel {
    	//les modeles
    	private ModeleStatistiquesGenres _genres;
    	
    	//les composants
    	private ArrayList <JLabel> _lblGenres;
    	private ArrayList<Color> _couleurs;
    	private JLabel _lblPlus;
    	
    	//les controleurs
    	private ControleurJLabelCliquable _controleurJLabel;
    	
    	public VueStatistiquesGenresGraphe (ModeleStatistiquesGenres genres) {
    		_genres = genres;
    		_genres.classementGenres();
    		
    		/**
    		 * TABLEAU DE COULEURS
    		 */
    		_couleurs = new ArrayList<Color>();
    		_couleurs.add(Color.black);
    		_couleurs.add(Color.blue);
    		_couleurs.add(Color.cyan);
    		_couleurs.add(Color.gray);
    		_couleurs.add(Color.green);
    		_couleurs.add(Color.magenta);
    		_couleurs.add(Color.orange);
    		_couleurs.add(Color.pink);
    		_couleurs.add(Color.red);
    		_couleurs.add(Color.yellow);
    		
    		/**
             * ON INSTANCIE LES COMPOSANTS
             */
    			/**
    			 * LE TABLEAU DE LABELS
    			 */
    			_lblGenres = new ArrayList<JLabel>();
    	        
    			for (int i=0; i<10; i++) {	        	
    	        	_lblGenres.add(new JLabel(i+1 + ". " + _genres.getElements_genres(i).get_libelle() + "  (" + _genres.getElements_genres(i).get_nbFilms() + " films)"));
    	        }
    	        
    	        /**
    	         * LE LABEL "EN SAVOIR PLUS"
    	         */
    	        _lblPlus = new JLabel("<html><u>En savoir plus...</u></html>");
    	        _lblPlus.setForeground(Color.blue);
    	        _lblPlus.setHorizontalAlignment(JLabel.RIGHT);
            
    	    /**
    	     * ON PLACE DANS LE PANEL
    	     */
            this.setLayout(new BorderLayout());
            this.add(_lblPlus, BorderLayout.SOUTH);
            
            
            /**
             * LES CONTROLEURS
             */
            _controleurJLabel = new ControleurJLabelCliquable(_lblPlus, _genres);
            _lblPlus.addMouseListener(_controleurJLabel);
    	}
    	
    	public void paintComponent (Graphics g){
    		int x = 40;
    		int nbFilms = _genres.nbTotalFilm();
    		for (int i=0; i<10; i++) {
    			x += 15;
    			float height= (_genres.getElements_genres(i).get_nbFilms()*1000)/(nbFilms);
    			int hauteur = java.lang.Math.round(height);
    			g.setColor(_couleurs.get(i));
    			g.fillRect(x, 220, 10, -hauteur);
    			
    			System.out.println(i);
    		}
    	}
    }
    

    • Partager sur Facebook
    • Partager sur Twitter

    Problème avec public void paintComponent (Graphics g)

    × 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