나는 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.
더 좋은 방법이 있습니까, 아니면 다른 제안이 있습니까? 실제 드로잉 경험이 없으므로 자세한 정보/소스를 제공해주십시오. 미리 감사드립니다!
에 관심이있을 수 있습니다? –
이 자습서를 참조 할 수 있습니까 ??? 나는 이것을 많이 읽으면 충분하다고 생각합니다 :) http://beginwithjava.blogspot.in/2008/07/in-most-basic-graphics-app-we-had.html – Azzy
"현재 저는 jpanel의 paintComponent 함수를 오버라이드하고 그 함수를 125ms마다 호출 "수동으로 'paintComponent' 메소드를 호출하면 안됩니다. –