2013-01-02 3 views
0

나는 GUI를 만들거나 자바로 그림을 그려 본 적이 없으며 선을 효율적으로 그리는 데 도움이 필요합니다. 내 응용 프로그램에서는 사용자에게 8 개의 버튼이 제공되며, 버튼을 누르면 버튼을 누르고있는 시간에 해당하는 선을 그려야합니다. 현재 jpanel의 paintComponent 함수를 재정의하고 125ms마다 paint() 함수를 호출합니다 (그리면 240 픽셀 너비가 필요하며 그 240px에 30 초 분량의 기록을 유지하려고합니다). 그것이 실행되고있는 하드웨어는 유지할 수 없으며 끔찍한/고르지 않게 보입니다.가장 좋은 방법은 선을 그려야합니다.

jPanel1 = new javax.swing.JPanel() { 
    protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    Something cur = manager.getSomething(getCurrentState()); 
    for(int j=0; j<cur.getNumItems(); j++) { 
     Item i1 = cur.getItem(j); 
     for(int i = 0; i<i1.getLength(); i++) { 
     int start = i1.getStartTime(i); 
     int len = Math.max(0, (Math.min(i1.getStopTime(i), pix) - start)); 
     g.fillRect(start,j*22+5,len,5); 
     } 
    } 
    g.drawLine(pix, 0, pix, 170); 
    } 
}; 

: 의 getItem (INT)이 특정 버튼에 대한 정보를 반환합니다 여기에 내가 사용하고있는 코드입니다. getStartTime (int)은 버튼을 눌렀을 때 주어진 시간의 시작 시간을 반환합니다. getStopTime (int)은 버튼을 눌렀을 때 주어진 시간의 정지 시간을 반환합니다. pix = 패널에있는 현재 픽셀입니다 (타임 라인의 30 초에 15 초가있는 경우 pix는 120과 같습니다)

마지막으로 저는 매번 jpanel1.paint()를 호출하는 타이머가 있습니다. 125ms.

더 좋은 방법이 있습니까, 아니면 다른 제안이 있습니까? 실제 드로잉 경험이 없으므로 자세한 정보/소스를 제공해주십시오. 미리 감사드립니다!

+1

에 관심이있을 수 있습니다? –

+0

이 자습서를 참조 할 수 있습니까 ??? 나는 이것을 많이 읽으면 충분하다고 생각합니다 :) http://beginwithjava.blogspot.in/2008/07/in-most-basic-graphics-app-we-had.html – Azzy

+0

"현재 저는 jpanel의 paintComponent 함수를 오버라이드하고 그 함수를 125ms마다 호출 "수동으로 'paintComponent' 메소드를 호출하면 안됩니다. –

답변

0

재정

public void paintComponent(Graphics g) { 
     super.paintComponent(g) 

     g.drawLine(this.x1, this.y1, this.x2, this.y2); 
    } 
+0

그는 이미 질문에 언급 된이 메서드를 재정의했습니다. –

+0

vishal_aim에서 말했듯이 이미이 작업을 수행했으며 사용중인 코드를 표시하기 위해 내 게시물을 업데이트했습니다. – user1725940

0

당신이해야 하지 전화 paint 또는 paintComponent 방법을 수동으로 JPanel의의의 paintComponent 기능.

더 나은 결과를 위해 당신은 invalidate()을 시도 할 수 있습니다 모든 125ms의

후 귀하의 패널이 repaint() 방법 후 당신은 또한 코드가 어디를 시도했습니다있다 repaint and invalidate