2013-01-21 45 views
0

我一直在看Java2D教程,並想知道如何使用鼠標繪製形狀來定義其大小(即形狀的大小不固定)。我還沒有遇到專門針對這個問題的教程,並且想知道如何以矩形爲例來實現這個功能。繪製一個具有未定義大小的形狀

+0

您是否嘗試過http://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseMotionListener.html? – Swapnil

回答

1

基本上,大小在每個時刻都是固定的。當您添加MouseMotionListener時,在捕獲下一個事件之前,可以在屏幕上繪製形狀,尺寸取決於當前的MouseEvent.getPoint(),它告訴您鼠標位置的座標。

重寫組件的paintComponent(Graphics g)方法。並調用repaint()方法鼠標位置的每次更新和形狀的大小後:

class YourPanel extends JPanel extends MouseMotionListener, MouseListener { 

    private Rectangle rect = new Rectangle(); 

    public YourPanel() { 
     addMouseListener(this); 
     addMouseMotionListener(this); 
    } 

    @Override 
    public void paintComponent (Graphics g) { 
     super.paintComponent(g); 
     g.draw(rect); 
    } 

    @Override 
    public void mouseDragged (MouseEvent me) { 
     rect.setSize(me.getX() - rect.x, me.getY() - rect.y); 
     repaint(); 
    } 

    @Override 
    public void mousePressed (MouseEvent me) { 
     rect.setLocation(me.getX(), me.getY()); 
     repaint(); 
    } 

    // Other methods... 

} 
0

形狀是一個字和java類,表示像矩形,橢圓,聚線路等

目前存在的幾何圖形因此,首先,用戶將必須決定哪些形狀,e.g聚線。
然後您將捕獲鼠標左鍵單擊事件,並且對於每次點擊,讀取鼠標座標並將該座標對(例如java.awt.geom.Point2D())添加到ArrayList<Point2D>。 這樣的清單的大小(實際上)是無界的。
在每次點擊時,您將創建一個將被繪製的當前形狀對象。一旦用戶點擊鼠標右鍵,形狀就會準備就緒,並且您可以將其存儲在形狀列表中。

0

你應該有你的類實現鼠標監聽器,然後保存鼠標偵聽器的變量用的getX和的getY繪製形狀。