2016-03-03 46 views
1

所有的x和y點我有這樣的,我拖我的鼠標,它基本上描繪小橢圓形或長方形的形狀,但我不確定如何讓它保存所有的點來重新油漆一下,當窗口調整大小時...我知道它與paintComponent()有關,但不太清楚如何去做,任何幫助將不勝感激保存從的mouseDragged

這是位圖

public void mouseDragged(MouseEvent evt){ 
     Point pt = evt.getPoint(); 
     x = pt.x; 
     y = pt.y; 
     Graphics g = getGraphics(); 
     g.setColor(color); 
     if(Shape == "Oval"){ 
      g.drawOval(x, y, 10, 10); 
      } 
     if(Shape == "Rectangle"){ 
      g.drawRect(x, y, 10, 10); 
      } 
    } 

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 

    } 
+0

這樣可以很好地保存它們,但是如何在paintComponent方法中調用它們呢? – phobicpanda

回答

1

您可以創建一個存儲所有點的列表(外部到你的方法)。

List<Point> list = new LinkedList<>() ; 
public void mouseDragged(MouseEvent evt){ 
    Point pt = evt.getPoint(); 
    list.add(pt) ; 
+1

爲什麼你使用LinkedList? – AlexWien

+0

@AlexWien假設點只是迭代而不需要被索引訪問,它確實很重要。 OP只需要一些收藏。 –

+0

因爲他對於期望的點數沒有任何概念,並且它們將只被讀取一次。所以我想盡量減少重新分配的風險,因爲閱讀部分只出現一次。那是錯的嗎? – FiReTiTi