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
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);
}
}
}
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.
Mon site - Mon livre sur le XML - Mon blog