簡體   English   中英

畫線的最佳方法Java

[英]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);
    }

應該調用paintpaintComponent手動方法。

為了獲得更好的結果,您可以嘗試invalidate()並且每隔125ms之后在面板上執行repaint()方法

您可能也有興趣重新粉刷和無效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM