[英]Best way to draw lines java
我從來沒有創建過GUI或用Java做任何事情,都需要有效地繪制線條。 在我的應用程序中,將為用戶提供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)
最后,我有一個計時器,每125ms調用jpanel1.paint()。
有沒有更好的方法可以做到這一點,或者有人有其他建議嗎? 請提供詳細的信息/來源,因為我沒有任何實際的繪畫經驗。 提前致謝!
覆蓋您的JPanel的paintComponent函數
public void paintComponent(Graphics g) {
super.paintComponent(g)
g.drawLine(this.x1, this.y1, this.x2, this.y2);
}
你不應該調用paint
或paintComponent
手動方法。
為了獲得更好的結果,您可以嘗試invalidate()
並且每隔125ms之后在面板上執行repaint()
方法
您可能也有興趣重新粉刷和無效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.