我從來沒有創建過GUI或者用Java繪製任何東西,我需要幫助繪製線條。在我的應用程序中,用戶將被提供8個按鈕,並且想法是當按下按鈕時,應該在窗口上繪製與該按鈕被按下時相對應的線。目前,我正在重寫jpanel上的paintComponent函數,並且每125ms調用一次paint()函數(我只有240像素寬的範圍可供繪製,並且我希望在該240px上保留30秒的值),但是它正在運行的硬件無法跟上,它看起來很糟糕/非常波濤洶涌。這裏是我使用的代碼:繪製線條的最佳方式java
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'方法 –