2012-03-29 4 views
1

Je veux dessiner un histogramme de coefficient JPEGdessin histogramme

//coeff[] is the coefficients array 
int hist[]=new int[25]; 
for(int i=0;i<coeff.length;i++) 
hist[coeff[i]]++; 

maintenant je veux dessiner tableau hist comme histogramme de graphique à barres, mais je ne sais pas de fonction fait ça? merci d'avance

+0

On dirait que vous n'avez même pas d'abord googlé. –

+0

J'ai regardé JFreeChart mais je ne savais pas comment ajouter le tableau comme ensemble de données? – muhannad

Répondre

4

Lorsque vous avez une JFrame ou quelque chose comme ça, vous pouvez remplacer la méthode de peinture (Graphics g). Ensuite, vous pouvez dessiner les barres comme ceci:

@Override 
public void paint(Graphics g) 
{ 
    super.paint(g); 
    final int barwidth = 20; 
    for(int i=0;i<25;i++){ 
    g.fillRect(i*barwidth , 0, barwidth , hist[i]*10); 
    } 
} 

Voici un exemple avec un JLabel:

class Histogram extends JLabel{ 

//... make hist visible for this class 

    @override 
    protected void paintComponent(Graphics g){ 
    super.paintComponent(g); 
    final int BAR_WIDTH = 20; 
    final int X_POSITION = 0; 
    final int Y_POSITION = 200; 
    for(int i=0;i<25;i++){ 
     g.fillRect(X_POSITION +i*BARWIDTH , Y_POSITION , BAR_WIDTH , -hist[i]*10); 
    } 
    } 
} 

Ensuite, vous pouvez l'ajouter à votre ordinateur central comme celui-ci:

Histogram histogram = new Histogram(); 
add(histogram); 

Lorsque cette réponse à votre question s'il vous plaît marquer le fil, merci.

+0

bien, je veux Montrer l'histogramme sur un JLabel, comment pourrait-il être cela? – muhannad

+0

Ensuite, vous devez sous-classer à partir de JLabel et remplacer la méthode de peinture. – riv333

+0

Ah désolé, vous devez remplacer la méthode paintComponent. – riv333