绘制具有未定义大小的形状

时间:2013-01-21 18:21:41

标签: java

我一直在研究Java2D教程,并想知道如何使用鼠标绘制形状来定义其大小(即形状的大小不固定)。我还没有专门针对这个教程,并且想知道如何为矩形实现这个例子。

3 个答案:

答案 0 :(得分: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...

}

答案 1 :(得分:0)

Shapes是一个单词和java类,表示不同的几何图形,如矩形,椭圆,多边形线等。

因此,首先用户必须决定哪种形状,例如多边形线 然后,您将捕获鼠标左键单击事件,并且对于每次单击,读取鼠标坐标并将该坐标对(例如java.awt.geom.Point2D())添加到ArrayList<Point2D>。 这样一个列表的大小(实际上)是无界的。
每次点击,你将创建一个当前形状的对象,将被绘制。用户单击鼠标右键后,即可将形状准备好并将其存储在形状列表中。

答案 2 :(得分:0)

您应该让您的类实现鼠标侦听器,然后使用getX和getY保存鼠标侦听器的变量以绘制形状。