2012-03-29 2 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

처음에는 인터넷 검색을하지 않았던 것처럼 보입니다. –

+0

JFreeChart를 살펴 봤지만 배열을 데이터 세트로 추가하는 방법을 모릅니다. – muhannad

답변

4

JFrame 또는 이와 비슷한 것을 사용하면 페인트 (그래픽 g) 메서드를 재정의 할 수 있습니다. 그럼 당신은 다음과 같은 막대를 그릴 수 있습니다 :

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

여기

@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의와 예입니다 이 대답은 귀하의 질문에 스레드를 표시하시기 바랍니다, 감사합니다.

+0

글쎄, 나는 JLabel에 히스토그램을 보여주고 싶다. 어떻게 될 수 있겠는가? – muhannad

+0

그런 다음 JLabel에서 하위 클래스를 만들고 페인트 메서드를 무시해야합니다. – riv333

+0

아, 죄송합니다. paintComponent 메소드를 오버라이드해야합니다. – riv333