Drawing lines with mouse on canvas : Java awt

后端 未结 3 1409
难免孤独
难免孤独 2021-01-05 05:35

The attempt is to enable drawing of figures(a line for now) with mouse on the awt canvas . Iam trying out java graphics for the first time . So not sure how to go about it .

相关标签:
3条回答
  • 2021-01-05 06:23

    You should use the Line2D object in the awt package, create x and y values for the first click and the second click, and a boolean determining whether it's the first or second click. Then make an ArrayList of Line2D and draw them in your Can object. So then you can assign the before and after x and y values with your event in the mouse listener by using MouseEvent.getX() and getY().

    0 讨论(0)
  • 2021-01-05 06:29

    Here is a simple example of such "painting":

    public static void main ( String[] args )
    {
        JFrame paint = new JFrame ();
    
        paint.add ( new JComponent ()
        {
            private List<Shape> shapes = new ArrayList<Shape> ();
            private Shape currentShape = null;
    
            {
            MouseAdapter mouseAdapter = new MouseAdapter ()
            {
                public void mousePressed ( MouseEvent e )
                {
                currentShape = new Line2D.Double ( e.getPoint (), e.getPoint () );
                shapes.add ( currentShape );
                repaint ();
                }
    
                public void mouseDragged ( MouseEvent e )
                {
                Line2D shape = ( Line2D ) currentShape;
                shape.setLine ( shape.getP1 (), e.getPoint () );
                repaint ();
                }
    
                public void mouseReleased ( MouseEvent e )
                {
                currentShape = null;
                repaint ();
                }
            };
            addMouseListener ( mouseAdapter );
            addMouseMotionListener ( mouseAdapter );
            }
    
            protected void paintComponent ( Graphics g )
            {
            Graphics2D g2d = ( Graphics2D ) g;
            g2d.setPaint ( Color.BLACK );
            for ( Shape shape : shapes )
            {
                g2d.draw ( shape );
            }
            }
        } );
    
        paint.setSize ( 500, 500 );
        paint.setLocationRelativeTo ( null );
        paint.setVisible ( true );
    }
    

    it will remember all of the drawn shapes and with a small effort you can extend it to draw any other shapes you like.

    0 讨论(0)
  • 2021-01-05 06:29

    Make use of Line2D object in the AWT package and do the following steps:

    1. Create mouse (X,Y) values for first and second clicks
    2. Create a boolean variable to check if the click is the first or the second
    3. Make a List container to contain your Line2D objects
    4. Draw them in your Can object
    5. Assign the before and after (X,Y) values through the mouse listener's event

    The step number 5 could be achieved through:

    1. e.getX()
    2. e.getY()

    Where e is the mouse event and could be accesed through the parameter of the mouse listener method.

    0 讨论(0)
提交回复
热议问题