2014-07-16 65 views
1

我需要在一個JPanel在Java中畫一些線,我試圖用paintComponent()方法之外的另一種方法來繪製它們,以從另一個類中調用它,但由於繪圖圖形需要Graphics對象,所以我嘗試使用它this.getGraphics()但沒有爲我工作:如何在JPanel中繪製出來的paintComponent方法?

public class Panel extends JPanel{ 
    public void drawLine(int x1, int y1, int x2, int y2){ 
     this.getGraphics().drawLine(x1, y1, x2, y2); 
    } 
} 

任何suggessions請嗎?

回答

2

「有什麼建議嗎?」

保留Panel類中的Line2D對象的列表。 (List<Line2D>

迭代通過在paintComponent方法列表

Graphics2D g2 = (Graphics2D)g; 
for (Line2D line : lines) { 
    g2.draw(line); 
} 

然後,你可以只需要addLine(Line2D line)的方法,增加了一行到列表中,repaint()小號

public void addLine(Line2D line) { 
    lines.add(line); 
    repaint(); 
} 

「如何在paintaponent方法中繪製JPanel中的圖形?」

不要。所有自定義繪畫都應該在paintComponent方法中提供的Graphics對象的上下文中完成。所以你需要預測什麼可能被繪製,並繪製。如上所見,這可以是動態的。

+0

thx它運作良好,但是當我從集合中刪除一些行,並重新繪製它不會更新修改任何建議嗎? – user3578318

+0

您需要確保在'paintComponent'方法的開頭內部調用'super.paintComponent' –

相關問題