2012-03-29 106 views
1

我想畫一個JPEG係數直方圖繪製直方圖

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

現在我想提請HIST陣列狀條形圖柱狀圖,但我不知道有什麼功能呢嗎? 在此先感謝

+0

看起來你甚至沒有首先谷歌搜索。 – 2012-03-29 18:58:58

+0

我看着JFreeChart,但不知道如何將數組添加爲數據集? – muhannad 2012-03-29 19:04:10

回答

4

當你有一個JFrame或類似的東西,你可以重寫paint(Graphics g)方法。然後,你就可以繪製條是這樣的:

@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); 
    } 
} 

這裏是一個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); 
    } 
    } 
} 

然後,你可以把它添加到你的主機是這樣的:

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

當這回答你的問題請標記線索,謝謝。

+0

好吧,我想要在JLabel上顯示直方圖,那怎麼可能? – muhannad 2012-03-29 19:27:55

+0

然後,您必須從JLabel繼承並覆蓋那裏的paint方法。 – riv333 2012-03-29 19:58:52

+0

對不起,您必須重寫paintComponent方法。 – riv333 2012-03-29 20:07:38